【发布时间】:2013-02-26 09:40:07
【问题描述】:
我对 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 有点陌生!谢谢。
ps。我正在使用 commandButtons 操作在提交时打印两个输入的值以验证结果...
【问题讨论】:
-
从
h:selectBooleanCheckbox中删除f:ajax时是否存在问题?