JSF. SelectOneMenu and SelectItems

I am trying to allow a user to select a collection item from a drop-down list in JSF. This is the code I'm using:

<f:view>
 <h:form id="insert">
    <h:selectOneMenu value="#{MyBean.user}">
        <f:selectItems value="#{MyBean.userList}" var="currentUser" itemValue="#{currentUser.username}" itemLabel="#{currentUser.username}"/>
     </h:selectOneMenu>
     <h:commandButton value="Insert" action="#{AuctionBean.insertItem}"/><br>
 </h:form>
</f:view>

And this is the MyBean code:

@ManagedBean
public class MyBean{
    private String user;
    private Collection<User> userList;

    @PostConstruct
    public void init() {
                this.userList = UserRepository.getInstance().findAllUsers();
    }
    ...
    public String insertItem() {
         System.out.println("The selected user is " + this.user);
         ...
         return ("successfulInsertion");
    }
...
}

And if necessary, my getter and setter for the user:

public String getUser() {
        return this.user;
    }

    public void setUser(String user) {
        this.user = user;
    }

My problem is that when it prints "Selected User", it does not say user.toString (), but userList.toString ()! This is similar to selectOneMenu, which it did not configure correctly, but I searched a lot about it. Can anybody help? Thanks

+5
source share
2 answers

<f:selectItems>does not support Collection. You need Listeither Mapor Object[].

See also:


. , JSP Facelets. JSF 2.x JSP. <f:selectItems var>. JSP JSF 1.x . JSF 2.0, JSP Facelets. Facelets.

. :

+3

<f:ajax/> <h:selectOneMenu value="#{MyBean.user}">

<h:selectOneMenu value="#{MyBean.user}">
    <f:ajax/>
    <f:selectItems value="#{MyBean.userList}" var="currentUser" itemValue="#{currentUser.username}" itemLabel="#{currentUser.username}"/>
</h:selectOneMenu>

, ...

<f:ajax execute="@form"/> , insertItem

<h:commandButton value="Insert" action="#{AuctionBean.insertItem}">
    <f:ajax execute="@form"/>
</h:commandButton> 
+1

All Articles