首页 文章

需要的字段取决于JSF2 / PF4的其他字段的值[重复]

提问于
浏览
0

这个问题在这里已有答案:

我在Tomcat 7上使用带有Primefaces 4的JSF 2.2 .
我有一个表单,其中需要某些字段取决于复选框的值 . 因此,在下面的示例中,仅当选中复选框时(默认情况下),才需要字段集中的字段:

<h:form id="formId">
    ...
    <p:selectBooleanCheckbox id="fieldId1" value="#{myBean.firm}">
        <p:ajax event="change" process="@this :formId:fieldsetId" update="@this :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>

我的问题是ajax请求通过验证,因此当我取消选中该复选框时,如果未填充验证,则验证将失败,并且模型不会更新 .
所以我的属性公司仍然在myBean中设置为true,我的inputText字段仍然是必需的 .

起初我忘了处理字段集

<p:ajax event="change" process="@this" update="@this :formId:fieldsetId"/>

这可行,或者我,但由于该字段未处理,如果我在取消选中该框之前填充了一些字段,则所有数据都将丢失 . 在这种情况下,设置immediate =“true”将不起作用 .

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

谢谢

1 回答

  • 0

    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>
    

    在 beans 里

    public void checkBoxListener(ValueChangeEvent event) {
        this.firm = (Boolean) ((UIInput) event.getComponent()).getValue();
    }
    

相关问题