核心提示:Struts2中通过配置文件重定向后常出现参数找不到的问题,总结一下解决方法: 1. 确保Action中的需要在redirect时传递变量是基本类型(比如int、long等); 2. 确保变量都有setter getter; 3. 配置文件: redirect方式: action name = view class = myActio |
Struts2中通过配置文件重定向后常出现参数找不到的问题,总结一下解决方法:
1. 确保Action中的需要在redirect时传递变量是基本类型(比如int、long等);
2. 确保变量都有setter & getter;
3. 配置文件:
redirect方式:
<action name="view" class="myAction" method="view"> <result name="success">view.jsp</result> </action> <action name="save" class="myAction" method="save"> <result name="success" type="redirect">view.html?id=${id}</result> <result name="input">input.jsp</result> </action> <action name="view" class="myAction" method="view"> <result name="success">view.jsp</result> </action> <action name="save" class="myAction" method="save"> <result name="success" type="redirect">view.html?id=${id}</result> <result name="input">input.jsp</result> </action>
redirect-action方式略有不同,将重定向的result改成如下格式即可:
<result name="success" type="redirect-action"> <param name="actionName">view</param> <param name="id">${id}</param> </result>
关于多个参数的传递,如下案例
<action name="blahblahAction" class="blahAction" method="blah"> <result name="success" type="redirect">/some.action?field1=${field1}&field2=${field2}</result> </action>
运行时候出现如下提示:
The reference to entity "field2" must end with the ';' delimiter.
我本以为是OGNL的问题,四处搜寻,不得其解……看了DTD也没有发现问题。
后来修改过程中突然发现原来是SAX解析器出错,我这才想到可能是XML的问题。
经过再三查询得到解决方案:
使用"&"代替"&",原理和HTML中的转义相同,我居然忘记了XML的语法规范,惭愧。
配置如下:
<action name="blahblahAction" class="blahAction" method="blah"> <result name="success" type="redirect">/some.action?field1=${field1}&field2=${field2}</result> </action>