Retrieving SelectOneMenu Selected Value

I am testing the "SelectOneMenu" component on the jsf page. I populate this component dynamically, although my ManageBean (which will get all animals from the database).

I would like to know whether it is possible to see the user-selected element of this "SelectOneMenu" (combobox), I try with the value = "# {animalManage.animalSelect}", but it is only called at the beginning of the page. In addition, I use inputText to see the value of the selected set of "SelectOneMenu".

What am I doing wrong?

JSF:

    <body>
    <ui:component>
        <h:form>
                    <h:outputText value="Select one Mets File" />
                    <h:selectOneMenu id="combo" value="#{animalsManage.animalSelected}">
                        <f:selectItem itemLabel="Select..."  noSelectionOption="true"/>
                        <f:selectItems value="#{animalsManage.allAnimals}" />
                    </h:selectOneMenu>
                    <h:inputText id="textbox" value="#{animalsManage.animalSelected }" />
        </h:form>
    </ui:component>
</body>

ManageBean:

    @ManagedBean
    @ViewScoped
    public class AnimalsManage implements Serializable {

    @EJB
    private AnimalsFacadeREST animalsFacadeREST;
    private String animalSelected;
    private List< SelectItem> selectAnimals;

    public List<SelectItem> getAllAnimals() {
            List<Animals> al = animalsFacadeREST.findAll();
            selectAnimals = new ArrayList< SelectItem>();
            int i = 0;
            for (Animals animal: al) {
                selectAnimals.add(new SelectItem(i, animal.getName()));
                i++;
            }
            return selectAnimals;
    }

    public String getAnimalSelected() {
       return animalSelected;
    }

    public void setAnimalSelected(String animalSelected) {
        this.animalSelected = animalSelected;
    }
}
+5
source share
1 answer

There are many solutions to this problem. I present here two main ideas.

  • . <f:ajax> <h:selectOneMenu>, rerender, ,

    <h:selectOneMenu id="combo" value="#{animalsManage.animalSelected}">
        <f:selectItem itemLabel="Select..."  noSelectionOption="true"/>
        <f:selectItems value="#{animalsManage.allAnimals}" />
        <f:ajax execute="combo" render="textbox" />
    </h:selectOneMenu>
    <h:inputText id="textbox" value="#{animalsManage.animalSelected }" />
    

    , ajax, listener="#{animalsManage.performCustomAjaxLogic}" <f:ajax>.

  • . id = "textbox" . , jQuery,

    $('#combo').change(function() {
        $('#textbox').val($('#combo').val());
    });
    

    , .

+12