我知道这已被问过很多次,但主要是用ajax。我不能在我的项目中使用ajax。
我想在selectOneMenu A上创建一个事件并更新selectOneMenu B.
<p:selectOneMenu id="A" binding="#{bean.slmA}" >
<f:selectItems value="#{bean.itemsA}"/>
</p:selectOneMenu>
<p:selectOneMenu id="B" binding="#{bean.slmB}">
<f:selectItems value="#{bean.itemsB}"/>
</p:selectOneMenu>
我已经在valueChangeListener中使用了一个向itemsB添加元素的方法(也是onchange =&#34; submit()&#34;)但是slmB没有更新。
在向itemsB列表中添加元素后是否应该更新?
答案 0 :(得分:0)
如果没有ajax,我猜一个选项就是使用隐藏的commandButton
来完成一个完整的请求(我猜其他选项也是如此):
<h:form id="form">
<p:selectOneMenu id="A" value="#{bean.slmA}" onchange="$('#form\\:cb').click()">
<f:selectItems value="#{bean.itemsA}"/>
</p:selectOneMenu>
<p:selectOneMenu id="B" value="#{bean.slmB}">
<f:selectItems value="#{bean.itemsB}"/>
</p:selectOneMenu>
<p:commandButton id="cb" ajax="false" style="display: none" value="button" action="#{bean.functionThatFillInformationOfListB()}" />
</h:form>
Bean必须至少为@ViewScoped
且functionThatFillInformationOfListB()
返回void或null。请注意,我已将binding
更改为value
中的selectOneMenu
,但如果您实际上在bean上创建了selectOneMenu
,则忽视它(我认为它仍然有用)。