如何使用 Struts 2 中操作中的 ArrayList 值填充 <s:select> 标记的值?

问题描述 投票:0回答:2

我正在开发一个简单的 Struts 应用程序。在我的 JSP 中,我有一个下拉列表框(使用

<s:select>
标签)。我需要用操作类中的
ArrayList
值填充这些值。我怎样才能做到这一点?需要在
struts.xml
文件中进行哪些更改才能完成此操作?

JSP:

<s:select name="department" label="" list="departmentlist"  headerKey="-1" headerValue="Select Department">

动作类:

private List<String> departmentlist = new ArrayList<String>();

public String xyz()
{
    departmentlist.add("aaa");
    departmentlist.add("bbb");
    departmentlist.add("ccc");
    departmentlist.add("ddd");
    return "success";
}

更新:

我收到以下错误消息:

“无法将请求的列表键“departmentlist”解析为集合/数组/映射/枚举/迭代器类型。示例:people 或 people。{name} - [未知位置]

java jsp struts2 struts valuestack
2个回答
2
投票

错误

“无法将请求的列表键“departmentlist”解析为 集合/数组/映射/枚举/迭代器类型。示例:人或 人们。{name} - [未知位置]“

意味着

<s:select>
标签无法将
departmentlist
解析为集合。它是一个 OGNL 表达式,它试图在值堆栈中查找
departmentlist
,如果未找到或包含
null
引用,则
<s:select>
标签会抱怨。当您渲染
<s:select>
标记
时,请确保列表位于值堆栈中并且已初始化


0
投票

尝试在您的班级中为我们的现场部门列表添加 get 和 set 方法 说明: 在您的类控制器中将此方法放入您的现场部门列表中:

public  List<String> getDepartmentlist(){
  return this.departmentlist();
}

public void setDepartmentlist(List<String> departmentlist){
  return this.departmentlist = departmentlist;
}
© www.soinside.com 2019 - 2024. All rights reserved.