Я хочу выбрать значения из меню selectManyCheckbox Primefaces и установить выбранные значения в свойство, которое будет использоваться позже в методе записи в базу данных. Вот код со страницы .xhtml для компонента:
<p:selectManyCheckbox id="chkbox1"
value="#{requestBean.filterTypeBean.selectedBooleanFilterTypes}"
layout="pageDirection" converter="filterTypeConverter">
<f:selectItems var="checkbox"
value="#{requestBean.filterTypeBean.listBooleanFilterTypes()}"
itemLabel="#{checkbox.filterTypeName}" itemValue="#{checkbox}" />
</p:selectManyCheckbox>
Класс RequestBean - это @ViewScoped, и внутри него у меня есть:
private FilterTypeBean filterTypeBean = new FilterTypeBean(); // Plus public get and set method for it
Класс FilterType - это @SessionScoped, и в нем у меня есть:
private List<TFilterType> selectedBooleanFilterTypes; //plus public get and set methods
public List<TFilterType> listBooleanFilterTypes() {
EntityManager em = HibernateUtil.getEntityManager();
Query q = em
.createQuery("select u from TFilterType u where u.filterType = 'B'");
List<TFilterType> resultList = q.getResultList();
return resultList;
}
Для меня все выглядит нормально, но когда я нажимаю commandButton, список selectedBooleanFilterTypes пуст, даже если я выбираю некоторые значения из selectManyCheckbox. Я пытаюсь получить значения в классе RequestBean, используя метод getSelectedBooleanFilterTypes():
List<TFilterType> selectedBooleanFilterTypes = filterTypeBean
.getSelectedBooleanFilterTypes();
Кажется, что setSelectedFilterTypesNames() не выполняется. Любое предложение, в чем проблема здесь и как ее исправить? Заранее спасибо!
Вопрос: Деталь конвертера:
public Object getAsObject(FacesContext context, UIComponent component, String value) {
// It will create bean when not done yet.
FilterTypeBean filterTypeBean = context.getApplication().evaluateExpressionGet(context, "#{filterTypeBean}", FilterTypeBean.class);
for (TFilterType type : filterTypeBean.listBooleanFilterTypes()) {
if (type.getFilterTypeName().equals(value)) {
return type;
}
}
return null;
}
listBooleanFilterTypes
. Не выполняйте бизнес-логику в геттере. Затем проверьте, не происходит ли сбой преобразования и вызывается ли установщик - person kolossus   schedule 30.04.2014listBooleanFilterTypes
? - person kolossus   schedule 01.05.2014