Struts2一个诡异问题的解决

本文描述了一种在Struts2项目中遇到的问题:一个Action类中的success变量在某些情况下值变为”false“,而非预期的”true“。通过调试发现另一方法getXXXX导致此问题,并给出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<style type="text/css"> <!-- p {text-indent:2em} --> </style>

项目中使用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时,该方法的自动执行。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值