隐藏/显示inputText取决于selectBooleanCheckBox

时间:2019-08-28 01:23:34

标签: jsf primefaces

当用户单击复选框时,我尝试显示/隐藏inputText。 当我使用update = @ form时,它可以工作,但是如果我提供id,它就不会

为什么?

在下面我举个例子

primefaces 5.3(已通过6.0相同的测试)

<h:form id="formId">

<p:outputPanel id="panel1" rendered="#{!param['checkb'].checked}">
<p:outputLabel value="input 1"/>
<p:inputText id="i1" value="#{employe.prenom}" />
</p:outputPanel>

<p:outputPanel id="panel2" rendered="#{param['checkb'].checked}">
<p:outputLabel value="input 2"/>
<p:inputText id="i2" value="#{employe.prenom}"/>
</p:outputPanel>

<p:selectBooleanCheckbox value="#{employe.mobileAsContact}" id="checkB">
    <p:ajax update="panel1 panel2"></p:ajax>
</p:selectBooleanCheckbox>

</h:form>

1 个答案:

答案 0 :(得分:0)

问题的解决归功于这篇文章:https://forum.primefaces.org/viewtopic.php?t=33980

使用h:panelGroup包围输入并更新此面板...已完成工作

<h:panelGroup id="panelGroupGlobal">
            <p:outputPanel id="panel1" rendered="#{!employe.mobileAsContact}">
                <p:outputLabel value="input 1" for="i1" />
                <p:inputText id="i1" value="#{employe.prenom}" required="true"/>
            </p:outputPanel>

            <p:outputPanel id="panel2" rendered="#{employe.mobileAsContact}">
                <p:outputLabel value="input 2" for="i2"/>
                <p:inputText id="i2" value="#{employe.prenom}" />
            </p:outputPanel>
        </h:panelGroup>

        <p:selectBooleanCheckbox value="#{employe.mobileAsContact}"
            id="checkB">
            <p:ajax update="formId:panelGroupGlobal"></p:ajax>
        </p:selectBooleanCheckbox>