无法从struts2中的值堆栈获取值

时间:2016-05-10 11:36:12

标签: jsp struts2 ognl

我使用struts 2,我想使用struts标签。 我想用

<s:select list="types" name="list"/>

从值堆栈中获取列表,这是我的操作代码

    ValueStack valueStack = ServletActionContext.getContext().getValueStack();
    valueStack.pop();
    valueStack.push(types);

但它不起作用。这是错误信息

HTTP Status 500 - tag 'select', field 'list', name 'list': The requested list key '#types' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]

但是,如果我将列表放入requestScope.It确实有效,就像这样<s:select list="types" name="#request.types"/>

那我该怎么办?

1 个答案:

答案 0 :(得分:0)

正如Walid所说,我应该在你的动作类中有一个getTypes()方法,而不是直接使用值栈。

所以我改变了我的代码:

List<String> types ;

public List<String> getTypes() {
    return types;
}

types = dailyNewsService.getAllTypes();

为了获得成功,请实施Preparable Interface并在其中加载“静态”数据:

@Override
public void prepare() throws Exception {
    types = dailyNewsService.getAllTypes();
}