Я пытаюсь сделать фильтр с помощью selectOneMenu.
У меня есть две категории, когда каждый - selectect, должен отфильтровать результаты, показанные, и также вторая категория.
Код JSF:
<div id="box-categories" class="box-left">
<b>Filter by topic</b>
<h:selectOneMenu id="cat1" binding="#{interfaceContainer.documentFormContainer.selectOnes['cat1'].selectOne}" rendered="true" onchange="javascript:refreshResults(); return false;">
<f:selectItems value="#{interfaceContainer.documentFormContainer.selectOnes['cat1'].items}" />
</h:selectOneMenu>
<b>and subtopic</b>
<h:selectOneMenu id="cat2" binding="#{interfaceContainer.documentFormContainer.selectOnes['cat2'].selectOne}" rendered="true" onchange="javascript:refreshResults(); return false;" value="#{interfaceContainer.documentFormContainer.selectOnes['cat2'].value}">
<f:selectItems value="#{interfaceContainer.documentFormContainer.selectOnes['cat2'].items}" />
</h:selectOneMenu>
</div>
Но у меня есть проблемы, когда я пытаюсь получить значения с помощью этого кода Java:
public String getStringValue(){
if ( this.selectOne ==null || this.getSelectOne().getValue()==null)
return "";
return this.getSelectOne().getValue().toString();
}
Я понял, что проблема только с getValue (), потому что отладка, this.getSelectOne () находится в правильном значении, но this.getSelectOne () .getValue () является пустым.
Какая-либо идея??Заранее спасибо
UIInput # getValue ()
вернет null, если вы попытаетесь получить к нему доступ на любом этапе перед этапом обновления значений модели. Очевидно, вы обращаетесь к нему в «неправильный» момент жизненного цикла JSF. В любом случае создание зависимых раскрывающихся меню в JSF без помощи Ajax - это ужасно.
Короче говоря, вот как это сделать: Заполнить дочернее меню (с полными и работающими примерами кода).