struts2的action中方法重复执行
2012-08-07 11:44
387 查看
struts2中使用json插件执行ajax处理时,如果方法名是get方法的时候,方法会莫名其妙的执行两次。
原因:struts2 中JSON的原理是在ACTION中的get方法都会序列化,前面是get的方法只要没指定不序列化,都会在序列化时再执行一次
解决方法
1、Action中的业务方法前不要以get开头 (属性的get set 除外)
2、用@JSON(serialize=false)指定方法不序列化
上面的getRealJvmInfo业务方法一次请求,结果执行了两次,改为realJvmInfo,结果只执行一次。
还有一种很好的解决办法在@Result注解中加上params={"root","jvmInfo"},JSON插件将只序列化指定的jvmInfo对象,这应该是一种最佳实践。
注意:此问题只出现在使用Struts2的JSON插件struts-json-plugin的情况下,在使用SpringSide的Struts2Utils.renderJson方法向前台传值没有此问题发生。
原因:struts2 中JSON的原理是在ACTION中的get方法都会序列化,前面是get的方法只要没指定不序列化,都会在序列化时再执行一次
解决方法
1、Action中的业务方法前不要以get开头 (属性的get set 除外)
2、用@JSON(serialize=false)指定方法不序列化
@Controller @ParentPackage(value="json-default") @Namespace("/middleware") @Results({ @Result(name="success",type="json") }) public class JvmInfoAction extends BaseAction<JvmInfo,String> { public String getRealJvmInfo() { .................. .................. return SUCCESS; } }
上面的getRealJvmInfo业务方法一次请求,结果执行了两次,改为realJvmInfo,结果只执行一次。
还有一种很好的解决办法在@Result注解中加上params={"root","jvmInfo"},JSON插件将只序列化指定的jvmInfo对象,这应该是一种最佳实践。
注意:此问题只出现在使用Struts2的JSON插件struts-json-plugin的情况下,在使用SpringSide的Struts2Utils.renderJson方法向前台传值没有此问题发生。
相关文章推荐
- Ext调用Struts2执行某个Action时,Action对异常未进行捕获,Ext再请求这个Action的其他方法时也报同样的异常
- Struts2中action的方法被执行两次
- struts2中的action方法的执行顺序
- struts2请求两次即action方法执行两次
- 解决方法|struts2执行action前加入拦截器,导致获取不到参数
- struts2的action方法执行顺序 Preparable
- Struts2在执行Action中某一个方法之前是否进行校验
- Struts2中的action对应的方法执行两次----解决办法
- Struts2点击链接执行action方法
- Struts2中action的方法被执行两次
- struts2执行2次(两次二次)action方法的解决办法
- struts2 action配置时 method 省略不写 默认执行方法是什么?
- ssh 项目中struts2 "input"返回后无法执行Action解决方法
- Struts2 请求一次Action,却执行两次方法的解决
- struts2 action中的execute方法只执行一次
- struts2中Action中的方法执行两次的原因
- struts2 action重复执行的解决方案
- Struts2 action跳转及重复执行
- Struts2标签中调用action中的方法执行hql语句的错误
- struts2 action配置时 method 省略不写 默认执行方法是父类ActionSuppot中的execute()方法