使用bean对象Struts中的值填充下拉列表

时间:2013-06-21 05:31:13

标签: java jsp struts2 struts

我正在使用Struts2应用程序,我正在使用下拉列表。我使用user bean中的userId和userName填充此下拉列表,如下所示

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;
    }
}

Users bean如下面给出

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;
    }
}

我在JSP中使用Struts2标记lib编写了一个代码来迭代List 这样就可以填充下拉列表了

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

但是它在下拉列表中显示内存位置,而不是Option和UserId的UserName显示为值

预期输出

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

2 个答案:

答案 0 :(得分:3)

我认为您还需要为标记提供listKey和ListValue属性。

listKey =要从

获取字段值的列表对象的属性

listValue =从

获取标题的列表对象的属性

因此,在您的情况下,listKey = "userId"listValue = "userName"

答案 1 :(得分:0)

感谢那些试图通过发帖回复来帮助我的人。我最后通过对代码进行以下更改来完成它

1. 我应该在添加到List之前创建一个新对象,否则它将为所有三个值显示User3

    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代码

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

非常感谢