Struts2一个诡异问题的解决

项目中使用Struts2.。像很多问题一样,刚开始出现的时候,觉得很诡异,难以入手;解决掉之后,就知道其实很简单了。

前几天遇到一个问题,在某Action类中定义了一个名为success的字符串变量,正常情况下某actino1完成时,success的值应该是”true”;结果发现有些情况下,action1成功执行之后,success的值居然变成了”false”。我启用调试模式跟踪了一下,发现action1最后返回前,success已经赋值为”true”了,出现灵异现象了?

联想到前几天发的关于导出Excel的那篇文章中,在Action类中定义了一个getDownloadFileName方法来定制文件的名字,突然发现,这个Action类中,有一个名为getXXXX的方法(这个方法被定义为另一个action的执行方法),方法中有一个条件下,会给success变量赋值”false”。而struts2默认会执行Action(result type为json)中所有以get开头的方法,不出问题才怪呢!

于是动手在该getXXXX方法前,加上注解 @JSON(serialize=false),阻止框架对其序列化,即可避免每次执行action时,该方法的自动执行。

一个“诡异”的问题解决了。

posted @ 2012-04-11 14:24  Java EE  阅读(151)  评论(0编辑  收藏  举报