f:ajax监听器在动态添加的h:selectOneMenu中失败

时间:2012-05-24 05:57:47

标签: java jsf jsf-2 facelets

我正在向页面动态添加h:selectOneMenu。但是,listener的{​​{1}}方法并未针对selectItems调用,但如果从一开始就将f:ajax添加到页面中(不是使用h:selectOneMenu属性动态添加),它就会起作用。 我的代码如下:

(在@ Daniel的建议之后更正)

update

1 个答案:

答案 0 :(得分:1)

h:commandButton没有update属性,看起来像素数混合和纯JSF(update属性来自p:commandButton

f:ajax添加到commandButton并使用render属性

<h:commandButton value="Watch">
      <f:ajax render="deptsSelBox"/>
      <f:setPropertyActionListener value="#{true}" target="#{listRetriever.allow}" />
</h:commandButton>   

还会将您的选择ajax修复为此

<f:ajax listener="#{listRetriever.retrieve}" update="deptsSel"/>

并尝试将范围从request更改为view

另一种方法是在方法中设置allow的值,如下所示(你也可以将它作为参数发送)

<h:commandButton value="Watch" action="listRetriever.updateAllow">
      <f:ajax render="deptsSelBox"/>
</h:commandButton>  


public void updateAllow(){
     allow = true;
}