Search code examples
javascriptjsfjsf-2

Show/hide another input fields using h:selectBooleanCheckbox


I am using JSF2 and Java to build a web application. I want to build a form like the one at the picture below:

alt text

When somebody unchecks the checkbox the form should disappear: alt text

Here is an example with gwt.


So far, I tried some stuff with the <f:ajax> tag and an PropertyActionListener in the managedBean but it didn't work. Can somebody give me an example or at least some hints to accomplish my goal. I would be really thankfull


Solution

  • Use <f:ajax render="idOfPanelContainingInputFields"> in the checkbox and give the component containing the input fields a rendered attribute which depends on the checkbox's state. No need for another JS code clutter.

    <h:form>
        <fieldset>
            <legend>
                <h:selectBooleanCheckbox binding="#{showUserInfo}">
                    <f:ajax render="idOfPanelContainingTextBox" />
                </h:selectBooleanCheckbox>
                <h:outputText value="User information" />
            </legend>
            <h:panelGroup id="idOfPanelContainingTextBox" layout="block">
                <ui:fragment rendered="#{not empty showUserInfo.value and showUserInfo.value}">
                    <p>
                        <h:outputLabel for="firstName" value="First name:" />
                        <h:inputText id="firstName" value="#{bean.user.firstName}" />
                    </p>
                </ui:fragment>
            </h:panelGroup>
        </fieldset>
    </h:form>
    

    The above example binds the checkbox to the view, you can of course also bind it to a boolean bean property, you can then remove the not empty check from the rendered attribute.

                <h:selectBooleanCheckbox value="#{bean.showUserInfo}">
    
    ...
    
                <ui:fragment rendered="#{bean.showUserInfo}">
    

    See also: