Я пытаюсь заставить работать selectOneMenu. Мне удалось показать выбор с фильтром ввода, но каждый раз, когда я пытаюсь что-то там написать, все просто исчезает.
Вот код из представления:
<p:selectOneMenu style="width:160px" label="Supervisor" filter="true" filterMatchMode="startsWith" converter="userConverter">
<f:selectItem itemLabel="Choose..." itemValue="" />
<f:selectItems value="#{userBean.supervisors}" var="user" itemLabel="#{user.surname} #{user.name}" itemValue="#{user}"/>
</p:selectOneMenu>
Значения, передаваемые userBean.supervisors, предоставляются:
public List<User> getSupervisors() {
if (supervisors == null) {
supervisors = userDao.getUsersByRole(Enums.Roles.SUPERVISOR.getValue());
}
return supervisors;
}
А конвертер простой:
@FacesConverter(forClass = User.class, value="userConverter")
public class UserConverter implements Converter {
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if(value == "") return null;
// Convert ProjectDetail to its unique String representation.
User user = (User) value;
String idAsString = String.valueOf(user.getUserId());
return idAsString;
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
// Convert unique String representation of ProjectDetail back to ProjectDetail object.
Long id = Long.valueOf(value);
UserDAO userDao = new UserDAO();
User user = userDao.getUser(id);
return user;
}
}
Что интересно, если я изменю фильтрацию p:selectOneMenu на p:selectCheckboxMenu и все будет хорошо работать.