根据JSF2/PF4中其他字段的值,需要字段

根据JSF2/PF4中其他字段的值,需要字段,jsf,primefaces,tomcat7,jsf-2.2,Jsf,Primefaces,Tomcat7,Jsf 2.2,我在Tomcat7上使用JSF2.2和PrimeFaces4。 我有一个表单,其中某些字段是必需的,具体取决于复选框的值。因此,在下面的示例中,只有选中复选框(默认情况下为: ... ... 我的问题是ajax请求通过了验证,因此当我取消选中复选框时,如果输入字段没有填充,验证将失败,并且模型没有更新。 所以我的属性firm在myBean中仍然设置为true,并且仍然需要输入文本字段 起初我忘了处理字段集 这是有效的,或者我认为是有效的,但是由于字段没有被处理,如果我在取消选中框之前填充了一些字

我在Tomcat7上使用JSF2.2和PrimeFaces4。 我有一个表单,其中某些字段是必需的,具体取决于复选框的值。因此,在下面的示例中,只有选中复选框(默认情况下为:

... ... 我的问题是ajax请求通过了验证,因此当我取消选中复选框时,如果输入字段没有填充,验证将失败,并且模型没有更新。 所以我的属性firm在myBean中仍然设置为true,并且仍然需要输入文本字段

起初我忘了处理字段集

这是有效的,或者我认为是有效的,但是由于字段没有被处理,如果我在取消选中框之前填充了一些字段,那么所有的数据都会丢失。在这种情况下,设置immediate=true也不起作用

在我看来,这是一个非常简单和常见的用例,我不相信没有解决方案

谢谢

Hy

<h:form id="formId">
        ...
        <p:selectBooleanCheckbox id="fieldId1" value="#{myBean.firm}">
            <f:ajax listener="#{bean.checkBoxListener}" immediate="true" update=":formId:fieldsetId" />
        </p:selectBooleanCheckbox>
        ...
        <p:fieldset id="fieldsetId">
            <p:inputText id="field2" value="#{myBean.field2Value}" required="#{myBean.firm}"/>
            <p:inputText id="field3" value="#{myBean.field3Value}" required="#{myBean.firm}"/>
        </p:fieldset>
</h:form>

如果你不能从头开始写代码,请在作为答案之前运行并测试它。谢谢@BalusC,这就成功了!非常感谢您的回复和教程!
public void checkBoxListener(ValueChangeEvent event) {
    this.firm = (Boolean) ((UIInput) event.getComponent()).getValue();
}