Search code examples
javajspstruts2struts

Populating drop down with values in bean object Struts


I am having a Struts2 app where I am using a dropdown. I populated this dropdown with userId and userName from Users bean as below

public class DropDown extends ActionSupport{
    private List arrUserDetails = new ArrayList<Users>();

    public DropDown()
    {
        Users objUsers = new Users();
        objUsers.setUserId("101");
        objUsers.setUserName("User1");

        arrUserDetails.add(objUsers);

        objUsers.setUserId("102");
        objUsers.setUserName("User2");

        arrUserDetails.add(objUsers);

        objUsers.setUserId("103");
        objUsers.setUserName("User3");

        arrUserDetails.add(objUsers);
    }

    public String execute(){
        return SUCCESS;
    }

    public List getArrUserDetails() {
        return arrUserDetails;
    }


    public void setArrUserDetails(List arrUserDetails) {
        this.arrUserDetails = arrUserDetails;
    }
}

The Users bean is as Given Below

Users.java

public class Users
{
    private String userId;
    private String userName;

    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
}

I wrote a Code in JSP using Struts2 tag lib to Iterate through the List so that the drop down gets populated

<s:select label="UserList" list="arrUserDetails" name="yourSearchEngine" />

But it is displaying memory location in drop down rather than UserName for Option and UserId as Value

Expected Output

<select name=""> 
  <option value="101">User1</option>
  <option value="102">User2</option>
  <option value="103">User3</option>
</select>

Solution

  • Thanks for those who tried to help me by posting reply. I finally did it by doing Following Changes to the Code

    1.I should create a New Object before adding to List otherwise its going to Display User3 for all the Three Values

        public DropDown()
        {
            Users objUsers1 = new Users();
            objUsers1.setUserId("101");
            objUsers1.setUserName("User1");
    
            arrUserDetails.add(objUsers1);
    
            Users objUsers2 = new Users();
            objUsers2.setUserId("102");
            objUsers2.setUserName("User2");
    
            arrUserDetails.add(objUsers2);
    
            Users objUsers3 = new Users();
            objUsers3.setUserId("103");
            objUsers3.setUserName("User3");
    
            arrUserDetails.add(objUsers3);
        }
    

    2.JSP Code

    <s:select key="User List" list="arrUserDetails" listKey="userId" listValue="userName" />
    

    Thank you very much