我正在使用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>
答案 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" />
非常感谢