【发布时间】:2013-06-21 05:31:13
【问题描述】:
我有一个使用下拉菜单的 Struts2 应用程序。我使用来自用户 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;
}
}
我使用 Struts2 标签库在 JSP 中编写了一个代码来遍历列表 以便填充下拉列表
<s:select label="UserList" list="arrUserDetails" name="yourSearchEngine" />
但它在下拉菜单中显示内存位置,而不是 Option 的 UserName 和 UserId 作为 Value
预期输出
<select name="">
<option value="101">User1</option>
<option value="102">User2</option>
<option value="103">User3</option>
</select>
【问题讨论】:
-
在构造函数中做不是很好,考虑使用Prepare Interceptor,这里有一个链接:struts.apache.org/release/2.0.x/docs/prepare-interceptor.html