selectOneMenu with selectItems

时间:2010-07-13 08:46:07

标签: java jsf

我正在尝试使用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。

任何想法? 提前致谢

1 个答案:

答案 0 :(得分:2)

当您在更新模型值阶段之前的任何阶段尝试访问

UIInput#getValue()时,

{{1}}将返回null。您显然是在JSF生命周期中的“错误”时刻访问它。无论如何,在没有Ajax镜头帮助的情况下在JSF中创建依赖的下拉菜单是非常糟糕的。

长话短说,这是如何做到的:Populate child menu's(包含完整且有效的代码示例)。