我正在尝试使用selectOneMenu制作过滤器。
我有两个类别,一个是选择,必须过滤显示的结果,还有第二个类别。
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()是在rigth值中,但是this.getSelectOne()。getValue()是null。
任何想法? 提前致谢
答案 0 :(得分:2)
UIInput#getValue()
时,
{{1}}将返回null。您显然是在JSF生命周期中的“错误”时刻访问它。无论如何,在没有Ajax镜头帮助的情况下在JSF中创建依赖的下拉菜单是非常糟糕的。
长话短说,这是如何做到的:Populate child menu's(包含完整且有效的代码示例)。