Я теряю дни с этой странной проблемой, я дважды проверял все, но мой selectOneMenu просто не работает, и я не могу понять, почему.primefaces selectOneMenu не работает, когда он должен
Так вот мои коды:
Мой JSF
<p:selectOneMenu id="entityType"
value="#{entityBean.entity.type}"
style="width:240px;"
converter="entityTypeConverter"
valueChangeListener="#{entityBean.entityTypeListener}"
required="true">
<f:selectItems value="#{entityBean.typeList}"
var="et"
itemLabel="#{et.name}"
itemValue="#{et}" />
</p:selectOneMenu>
Мой конвертер:
@FacesConverter("entityTypeConverter")
public class EntityTypeConverter implements Converter {
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value == null || value.length() == 0) {
return null;
}
Long id = Long.parseLong(value);
return EntityType.findEntityType(id);
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
return value instanceof EntityType ? ((EntityType) value).getId().toString() : "";
}
}
Он работает, как ожидалось, когда я создаю (он передает выбранное значение), но когда я пытаюсь редактировать объект, выбранный тип на самом деле никогда не будет выбран. Я пробовал с перформами 3.1.1 и 3.2, но я не могу получить выбранное значение в режиме просмотра/редактирования.
Что я делаю неправильно?
Заранее благодарен!
Сущность и сущностьType - просто фантастические имена –
использовать 'p: ajax' вместо valueChangeListener ... – Daniel
Такая же проблема без valueChangeListener. Моя проблема - получить значение, выбранное при загрузке страницы редактирования. Я думаю, что значение = "# {entityBean.entity.type}", и конвертер должен это сделать, но, по-видимому, это не работает со мной. –