您的位置:首页 > 编程语言 > Java开发

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)指定方法不序列化

@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方法向前台传值没有此问题发生。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: