问题:动作重定向不包括参数作为Struts2中的复杂对象?

时间:2011-05-24 16:07:37

标签: redirect struts2 action

我尝试过一个示例,其中我使用UserAction类的insert方法插入了一个用户。

在插入时,我已将成功重定向到UserAction的loadAdd方法。

在重定向期间,我已将参数传递为

$ {用户}

在struts 2.0.14中,这给出了一个ognl异常。

而当我通过时

$ {user.id}

它有效。

我的观察结果表明这是struts或ognl中的一个错误,它在解析复杂对象时解析简单数据类型。

任何解决方法请建议。

或者

有没有办法可以在重定向的操作中转发完整的操作上下文或值堆栈

1 个答案:

答案 0 :(得分:2)

这不是一个错误。

Struts2使用类型转换系统在字符串(本机HTTP)和其他对象之间进行转换。它具有所有标准基元,盒装基元,集合,映射等的默认类型转换器。如果要允许Struts2自动在字符串和User类之间进行转换,则需要为其创建类型转换器。否则,您可以使用$ {user.id},这是一个原始或盒装原语。

http://struts.apache.org/2.2.3/docs/type-conversion.html

此外,ValueStack是按请求进行的,因此当您重定向并创建新请求时,之前的请求ValueStack将不再可用。