[英]JSF Ajax reset previously rendered input component values?
我有一个JSF和ajax的小问题(但很重要)。 表格在这里:
<h:form>
<h:panelGrid id="pg1" columns="2">
<h:outputText value="Type: "/>
<h:selectOneMenu id="selectOne" value="#{personBean.type}">
<f:selectItems value="#{listBean.personTypes}"/>
<f:ajax event="valueChange" render="pg2"/>
</h:selectOneMenu>
</h:panelGrid>
<h:panelGrid id="pg2" columns="2">
<h:outputText value="Really bad?" rendered="#{personBean.type=='BAD'}"/>
<h:selectBooleanCheckbox id="checkbox" value="#{personBean.reallyBad}" rendered="#{personBean.type=='BAD'}">
<f:ajax event="click"/>
</h:selectBooleanCheckbox>
</h:panelGrid>
<h:commandButton value="Ajax Submit" action="#{personBean.printValues}">
<f:ajax execute="@form"/>
</h:commandButton>
</h:form>
PersonBean是一个简单的bean,其枚举PersonType有两个值:NICE,BAD和一个名为reallyBad的布尔值。 ListBean返回列表中的枚举值以填充selectOneMenu。
基本上,当我选择BAD时,会显示布尔复选框的面板,我可以在其中勾选它以表示某个人是真的。 如果我愿意,我可以提交表格。 问题是当我勾选复选框然后再次选择NICE时,即使没有渲染,复选框仍然会被勾选。 因此,当我提交表格时,这个人可能是NICE和真棒,这是没有意义的。
在选择NICE时,我可以将复选框及其输入值重置为false,而不必再次选择BAD来取消选中该框。 我和JSF的ajax有点混蛋! 谢谢。
PS。 我使用commandButtons操作打印提交的两个输入的值以验证结果...
更改菜单时,您需要手动清除该复选框。
<f:ajax listener="#{personBean.setReallyBad(false)}" render="pg2" />
顺便说一句,您在代码中的两个<f:ajax event>
值已经是默认值。 只是省略它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.