2010-07-13 72 views
1

我正在尝试使用selectOneMenu制作一个过滤器。selectOneMenu with selectItems

我有两个类别,一个是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()在rigth值中,但this.getSelectOne()。getValue()为null。

任何想法??当您尝试更新模型值阶段之前在任何阶段访问它 在此先感谢

回答

2

UIInput#getValue()将返回null。您显然是在JSF生命周期的“错误”时刻访问它的。无论如何,在没有Ajax帮助的情况下在JSF中创建依赖下拉菜单是非常糟糕的。长话短说,下面是如何做到这一点:Populate child menu's(完整的代码示例和工作代码示例)。

+0

感谢您的回答。 我的问题是,我必须在表单标签中包含所有内容。 谢谢 – 2010-07-15 08:15:13