Struts2 <s:select list=mylist"/> 通过请求对象而不是在操作中 class

Struts2 <s:select list=mylist"/> via request object rather than in Action class

我有一个 <s:select list="myList" /> 是从一个 List<String> 填充的,该 List<String> 在 Action class 中与其相关的 getter 和 setter 一起找到...

按照这个简单的例子

https://www.mkyong.com/struts2/struts-2-sselect-drop-down-box-example/

但是我想知道是否可以不在操作中创建列表 class 而是在请求中存储列表对象

List<String> myList = new ArrayList<>();
myList.add("value1"); myList.add("value2"); etc...
request.setAttribute("myList", myList);

并用它来填充 <s:select list="myList" />

我已经尝试过,但无法正常工作。我想知道这是我做错了什么还是做不到?

我认为表单中的所有数据都是在 JSP 加载时添加到请求中的,所以如果按照上面的方式手动添加应该无关紧要...

可以像下面这样

List<String> myList = new ArrayList<>();
myList.add("value1"); myList.add("value2"); //etc...
ActionContext actionContext = ActionContext.getContext();
if(null != actionContext) {
        ValueStack stack = actionContext.getValueStack();
        stack.setValue("#request['myList']", myList);
}

然后

<s:select list="#request['myList']" />