s2sh框架 在action中 return "success" 返回json ,return之后为什么会执行一些其他的动作?具体方法不知道,打印sql能看出来! 求解!
上代码看看:有拦截器,但是拦截器没有执行那种操作。清理缓存和work目录仍然没效果。好像是只要是struts返回json就执行那个操作。不明白为什么return 之后进还会有操作。不是return 之后进struts 跳转么?
贴段代码看看:
/**
* 验证唯一性
*  
* @return
* @throws UnsupportedEncodingException
*/
public String check() throws UnsupportedEncodingException {
crpnotebcode = new String(crpnotebcode.getBytes("ISO-8859-1"), "UTF-8");
flag = recpaynoteService.check(crpnotebcode);
return "SUCCESS";
}struts2:
<package name="recpaynoteJSON" namespace="/basic/recpaynoteJSON" extends="json-default">
<action name="*_RecpaynoteActionJSON" class="recpaynoteAction" method="{1}">
<result name="SUCCESS" type="json">/</result>
</action>
</package>

解决方案 »

  1.   

    是不是spring配置了AOP,使得check方法在return的时候执行某个方法。你最好看看spring的配置文件
      

  2.   

    struts2 既然返回了json
    那就不需要return了
    public String check()改成
    public void check()不需要返回String
      

  3.   

    你在return之前加一句打印看看,sql那些打印是在这句打印之前还是之后
      

  4.   

    请问如果把返回值 return SUCCESS 改成return null 是不是跟用void 一样呢?
      

  5.   

    我debug模式运行,一直到 return 之前都没问题,就return之后不知道进的什么方法了,很奇怪,怀疑是AOP 但是配置中貌似没有啊
      

  6.   

    这种情况多半都是aop引起的,你仔细检查一下spring的配置吧,从web.xml开始,看看他加载了哪些spring的xml文件,然后一个个的看吧
      

  7.   

    求教当 action返回 string之后会执行什么动作?  是不是直接找struts?
      

  8.   

    如果是AOP 那我换个方法名称是不是就可以避免?  我试过换方法名称,不行的
      

  9.   

    不是的,spring配置事务一般是这样的: <aop:config>
    <aop:aspect ref="logManager">
    <aop:pointcut id="logAOP" expression="execution(* com.study.spring.aop.service.*.*.*(..))"/>
    <aop:before method="printLog" pointcut-ref="logAOP"/>
    <aop:after method="printLog" pointcut-ref="logAOP"/>
    <aop:after-returning method="afterReturning" pointcut-ref="logAOP"/>
    <aop:after-throwing method="printLog" pointcut-ref="logAOP"/>
    </aop:aspect>
    </aop:config>他可能会针对某个包下的所有对象的方法都是用拦截,所以换方法名什么的基本没用
      

  10.   

    spring 中 AOP  :
    <!-- 启动对@AspectJ注解的支持 -->
    <aop:aspectj-autoproxy proxy-target-class="true"/>
    这这一点配置,其他的没有   很纳闷的是  我跑DEBUG模式跟踪,return后执行的数据修改操作不在自己写的方法中! 请问一下 action return 字符串之后的执行原理?