通过Bean在selectOneMenu上设置默认选择

时间:2013-08-15 15:44:58

标签: jsf seam

这种接缝就像一个简单的问题,但也许我错过了一些东西。我正在尝试使用当前登录用户预填充搜索过滤器中的用户字段。正在按预期填充角色过滤器,但用户字段默认为空白。我在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>

非常感谢

1 个答案:

答案 0 :(得分:1)

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

long id = user.getStaff().getId();
for( Staff staff : staffList )
    {
    if( staff.getId() == id )
        {
        searchFilter.setStaff( staff );
        break;
        }
    }