jsf 2.0 - using a radiobutton selection to hide a dropdownlist and displaying another

StackOverflow https://stackoverflow.com/questions/23656660

  •  22-07-2023
  •  | 
  •  

سؤال

Trying to use a pair of radio buttons to hide and display different select one menu but it doesn't seem to be getting anywhere. The issue is if i set the default one in the bean from true to false, it would not change even if i change the radio button to the other option.Should I be using something else for JSF besides render? The end result is depending on the radio-button being checked you will see a different set of select one menu options being displayed.

JSF Page with the Section being described.

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">

<h:form id="form">

    <h3>

        <b>Test Origin: </b>
        <h:selectOneRadio required="true" value="#{engTaskFormBean.testOrigin}">
            <f:selectItem itemValue="#{true}" itemLabel="Qualification" />
            <f:selectItem itemValue="#{false}" itemLabel="Experimental" />
        <f:ajax execute="@this" render="output" />
        </h:selectOneRadio>
        <br /> <br />

        <h:panelGroup id="output">
            <b>Priority Category: </b>

            <h:selectOneMenu value="#{engTaskFormBean.priorityCatValue}"
                rendered="#{engTaskFormBean.testOrigin}">
                <f:selectItem itemValue="End Of Life" itemLabel="End Of Life" />
                <f:selectItem itemValue="New Design" itemLabel="New Design" />
                <f:selectItem itemValue="2nd Source" itemLabel="2nd Source" />
                <f:selectItem itemValue="Suitable Sub." itemLabel="Suitable Sub." />
            </h:selectOneMenu>
            <br />
            <br />

            <h:selectOneMenu value="#{engTaskFormBean.priorityCatValue}"
                rendered="#{!engTaskFormBean.testOrigin}">
                <f:selectItem itemValue="Customer Inquiry" itemLabel="Customer Inquiry" />
                <f:selectItem itemValue="Internal" itemLabel="Internal" />
            </h:selectOneMenu>
            <br />
            <br />
        </h:panelGroup>

    </h3>

</h:form>
</html>

JSF Bean

private boolean testOrigin;


public boolean isTestOrigin() {
    return testOrigin;
}

public void setTestOrigin(boolean testOrigin) {
    this.testOrigin = testOrigin;
}
هل كانت مفيدة؟

المحلول

Your 1st drop-down list should look like this:

<h:selectOneRadio required="true" value="#{engTaskFormBean.testOrigin}">
    <f:selectItem itemValue="#{true}" itemLabel="Qualification" />
    <f:selectItem itemValue="#{false}" itemLabel="Experimental" />
    <f:ajax execute="@this" render="output" />
</h:selectOneRadio>

Your initial true and false is text, not boolean. Then, in the output section, use the following: rendered="#{engTaskFormBean.testOrigin}"

نصائح أخرى

The problem i was getting was the didn't seem to be working , the workaround I used was with primefaces.

all together the code is

        <b>Test Origin: </b>
        <h:selectOneRadio required="true" value="#{engTaskFormBean.testOrigin}">
            <f:selectItem itemValue="#{true}" itemLabel="Qualification" />
            <f:selectItem itemValue="#{false}" itemLabel="Experimental" />
            <p:ajax process="@this" update=":form:output"/>
        </h:selectOneRadio>
        <br /> <br />

        <h:panelGroup id="output">
        <center>    
            <b>Priority Category: </b>

            <h:selectOneMenu value="#{engTaskFormBean.priorityCatValue}"
                rendered="#{engTaskFormBean.testOrigin}">
                <f:selectItem itemValue="End Of Life" itemLabel="End Of Life" />
                <f:selectItem itemValue="New Design" itemLabel="New Design" />
                <f:selectItem itemValue="2nd Source" itemLabel="2nd Source" />
                <f:selectItem itemValue="Suitable Sub." itemLabel="Suitable Sub." />
            </h:selectOneMenu>
            <br />
            <br />

            <h:selectOneMenu value="#{engTaskFormBean.priorityCatValue}"
                rendered="#{!engTaskFormBean.testOrigin}">
                <f:selectItem itemValue="Customer Inquiry" itemLabel="Customer Inquiry" />
                <f:selectItem itemValue="Internal" itemLabel="Internal" />
            </h:selectOneMenu>
            <br />
            <br />

        </center>
        </h:panelGroup>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top