我对 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 和一个名为 realBad 的布尔值。ListBean 返回列表中的枚举值以填充 selectOneMenu。
基本上,当我选择 BAD 时,会呈现布尔复选框的面板,我可以在其中打勾以表示一个人真的很糟糕。如果我愿意,我可以提交表格。问题是当我勾选复选框然后再次选择 NICE 时,即使未呈现复选框,它仍会被勾选。所以当我提交我的表格时,这个人可能很好,也很糟糕,这没有任何意义。
与其必须再次选择不好的方法来取消选中框,不如是我可以将复选框及其输入值重置为false时的一种方式吗?我对 JSF 的 ajax 有点陌生!谢谢。
附言。我正在使用 commandButtons 操作在提交时打印两个输入的值以验证结果...