2013-08-15 2 views
1

Это швы, как легкая проблема, но, возможно, я чего-то не хватает. Я пытаюсь предварительно заполнить поле пользователя в поисковом фильтре с текущим зарегистрированным пользователем. Фильтр роли заполняется так, как ожидалось, но поле пользователя по умолчанию пусто. Я установил оператор журнала в bean-компоненте, и он проверяет, что бит установлен. Я также выполнил поиск в функции goToBasicSearch и выполняет поиск на основе текущего зарегистрированного пользователя.Установка выбора по умолчанию на selectOneMenu через Bean

Выпадающий список заполняется правильно, и выбор пользователя и поиск выполняются правильно. Я хотел бы знать, почему пользовательский интерфейс не заполняет поле значением по умолчанию. стек технологии: Шов 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> 

Большое спасибо

+0

Действительно не уверен, почему это сработало, но это решило проблему. Я изменил 'searchFilter.setStaff (user.getStaff());' to long id = user.getStaff(). GetId(); для (Персонал персонала: staffList) { if (staff.getId() == id) { searchFilter.setStaff (штат); } } – drandall

ответ

1

вместо установки сотрудника на searchFilter.setStaff(user.getSTaff()); I пришлось искать в списке.

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