我正在尝试使用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()在严格的值中,但是this.getSelectOne().getValue()是空的。
知道吗??提前感谢
发布于 2010-07-13 11:33:56
当您试图在更新模型值阶段之前的任何阶段访问它时,UIInput#getValue()将返回null。您显然是在JSF生命周期的“错误”时刻访问它的。无论如何,在JSF中创建依赖的下拉菜单而不借助Ajax是很糟糕的。
长话短说,下面是如何做到这一点:填充子菜单 (有完整的和工作的代码示例)。
https://stackoverflow.com/questions/3235499
复制相似问题