1

这看起来像是一个简单的问题,但也许我错过了一些东西。我正在尝试使用当前登录的用户在搜索过滤器中预填充用户字段。角色过滤器按预期填充,但用户字段默认为空白。我在 bean 中设置了一条日志语句,它验证了 bean 是否被设置。我还在 goToBasicSearch 函数中进行了搜索,它根据当前登录的用户进行搜索。

下拉列表已正确填充,并且选择用户和搜索工作正常。我想知道为什么 UI 没有使用默认值填充该字段。技术栈:Seam 2.3、Jboss 7、JSF 2、Richfaces 4

豆:

@Name( "SearchAction" )
@Scope( ScopeType.CONVERSATION )
public class SearchAction
    {
    private SearchFilter searchFilter = new SearchFilter;
    // other stuff

    @Begin(join = false )
    public String goToBasicSearch()
        {
         searchFilter.setRole( Roles.ANY );
         searchFilter.setStaff( user.getStaff() );
         return SEARCH;
        }

XHTML

<!-- normal stuff -->
<h:selectOneMenu required="false" value="#{SearchAction.searchFilter.staff}">
    <s:selectItems  id="staffField" var="_selection" label="_selection.fullName" value="#{allStaff}" noSelectionLabel=""/>
    <f:converter converterId="converter.staff"/>
</h:selectOneMenu>
<h:selectOneMenu id="roleField" required="false" value=#{SearchAction.searchFilter.role}">
    <s:convertEnum />
    <s:selectItems id="roleField" var="_selection" label="#{_selection.title} value=#{SearchAction.roleList}" noSelectionLabel="" hideNoSelectionLabel="true" itemValue="#{_selection}"
</h:selectOneMenu>

非常感谢

4

1 回答 1

1

searchFilter.setStaff(user.getSTaff());我不得不搜索列表,而不是设置工作人员。

long id = user.getStaff().getId();
for( Staff staff : staffList )
    {
    if( staff.getId() == id )
        {
        searchFilter.setStaff( staff );
        break;
        }
    }
于 2013-08-19T18:45:06.137 回答