Redirect 问题:操作重定向是否不将参数作为复杂对象包含在Struts2中?

Redirect 问题:操作重定向是否不将参数作为复杂对象包含在Struts2中?,redirect,struts2,action,Redirect,Struts2,Action,我尝试了一个示例,其中我使用UserAction类的insert方法插入了一个用户 在insert上,我已将success重定向到用户操作的loadAdd方法 在重定向期间,我将参数传递为 ${user} 在struts 2.0.14中,这给出了一个ognl异常 而当我经过的时候 ${user.id} 它起作用了 我的观察表明,这是struts或ognl中的一个缺陷,它在解析简单数据类型时解析复合对象 任何工作,请建议 或 是否有任何方法可以转发重定向操作中的完整操作上下文或值堆栈?这不是错误

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

在insert上,我已将success重定向到用户操作的loadAdd方法

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

${user}

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

而当我经过的时候

${user.id}

它起作用了

我的观察表明,这是struts或ognl中的一个缺陷,它在解析简单数据类型时解析复合对象

任何工作,请建议

是否有任何方法可以转发重定向操作中的完整操作上下文或值堆栈?这不是错误

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


此外,ValueStack是每个请求的,因此当您重定向并创建新请求时,以前的请求ValueStack将不再可用。

我知道这不是一个bug,但struts可能会使用默认的user.id来停止执行,而不是停止执行。用户得到的是一个很长的异常堆栈跟踪,如果不进行处理,程序就会停止。因此,struts2社区需要关注。感谢您让我参考用户定义的类型转换,但我不确定我是否能够直接使用该转换转储完整的用户对象,包括其多个链接对象和集。用户对象几乎有12个基本类型,10个复杂对象,它们又有更多的对象和4个集合。类型转换并不能取代User.name、User.email等。它只是设置用户是什么。您似乎希望user.id和user是同义词。也许您可以澄清一下您实际上在尝试做什么?我希望在重定向操作时传递完整的用户对象及其嵌套对象和集合。由于此数据未发布,但使用Get,因此我必须只传递id。因此,我期待的是在操作重定向期间发布一些数据,或将完整的值堆栈转发到重定向的操作。有什么解决办法吗?