struts2,action方法自动执行两次

发现一个比较有意思的bug,

//Action中以get开头且返回类型不为void(如 public Object  get*() )的方法会被自动执行
//放入值栈时会执行一次,
//若在页面调用则再执行一次

如下面这个method

public String getUserByID() {
        System.out.println("userAction.getUserByID()执行中。。。");

        idUser = userService.getUserByID(user.getUid());

        return SUCCESS;
}

若调用调用这个方法会发现,查询语句被执行了两次

UserAction.getUser()执行中。。。
userAction.getUserByID()执行中。。。
Hibernate:
    select
        user0_.uid as uid1_0_0_,
        user0_.username as username2_0_0_,
        user0_.address as address3_0_0_
    from
        tbl_user user0_
    where
        user0_.uid=?
userAction.getIdUser()执行中。。。
userAction.getIdUser()执行中。。。
userAction.getIdUser()执行中。。。
userAction.getIdUser()执行中。。。
userAction.getUserList()执行中。。。
userAction.getPageList()执行中。。。
userAction.getIdUser()执行中。。。
userAction.getName()执行中。。。
UserAction.getPage()执行中。。。
userAction.getPageList()执行中。。。
UserAction.getUser()执行中。。。
userAction.getUserByID()执行中。。。
Hibernate:
    select
        user0_.uid as uid1_0_0_,
        user0_.username as username2_0_0_,
        user0_.address as address3_0_0_
    from
        tbl_user user0_
    where
        user0_.uid=?
userAction.getUserList()执行中。。。

而且在执行其他method方法时也会调用这个方法,这样会导致程序跳出异常,把method名改为selectUserByID()问题解决

原文地址:https://www.cnblogs.com/annofyf/p/9797827.html

时间: 2024-07-31 19:48:23

struts2,action方法自动执行两次的相关文章

Action 方法的执行(一)

[toc] 在 Aps.net mvc 应用中对请求的处理最终都是转换为对某个 Controller 中的某个 Action 方法的调用,因此,要对一个请求进行处理,第一步,需要根据请求解析出对应的 Controller 和 Action 的名称,这是 Asp.net mvc 中的路由 的职责所在,第二步,需要根据第一步解析出来的内容定位对请求进行处理的 Action 方法所属的 Controller 类型,定位的过程称为 Asp.net mvc 中 Controller 的激活,第三步,就是根

IOS viewDidLoad方法被执行两次(viewDidLoad和loadView方法详解)

为了搞清楚viewDidLoad.loadView等方法的用途和调用顺序,写了一个小demo,不料viewDidLoad方法被执行了两次,模拟器也一直是黑屏.查看了这两个方法的官方解释后找到了错误原因和解决方法. 首先来看UIViewController.h文件中对viewDidLoad方法的解释: - (void)viewDidLoad; // Called after the view has been loaded. For view controllers created in code

react 调用 function 的写法 及 解决 react onClick 方法自动执行

1.react 调用方法的写法 (1)方式一 onClick={this.getFetchData.bind(this,item.id)} (2)方式二 getFetchData(e){ this.setState({ value: e.target.value }) } onClick={(event)=>this.getFetchData(event)} (3)方式三 handleCancel = () => { console.log('Clicked cancel button');

web项目启动时,自动执行代码

tomcat启动时自动执行,以下两种方法的执行时长,会计算在tomcat的启动时长里. 1.ServletContextListener web.xml配置<listener> <listener-class>com.yuan.framework.GreyClientInitListener</listener-class> </listener> 1 public class GreyClientInitListener implements Servle

spring framework web @Scheduled 执行两次的问题

与本文相关的关键词:Spring @Scheduled 执行两次的问题 使用组件:Spring framework web mvc 现象如下:使用@Scheduled标注的方法会执行两次 通过google输入关键词:spring @scheduled called twice,会显示许多人遇到相似问题. 该问题的根本原因就是包含有@Scheduled方法的类被初始化两次. 在spring官方说明中有如下提示: Make sure that you are not initializing mul

为什么struts2 ajax 方法执行两次

struts2中使用json插件执行ajax处理时,如果方法名是get方法的时候,方法会莫名其妙的执行两次. 原因: struts2 中JSON的原理是在ACTION中的get方法都会序列化,所以前面是get的方法只要没指定不序列化,都会执行解决方法 Action中的业务方法前别加get 或者 set(属性的get set 除外) 用@JSON(serialize=false)指定方法不序列化如import com.googlecode.jsonplugin.annotations.JSON;@

struts2 ajax请求发现执行action两次原因

struts2中使用json插件执行ajax处理时,如果方法名是get方法的时候,方法会莫名其妙的执行两次. 原因: struts2 中JSON的原理是在ACTION中的get方法都会序列化,所以前面是get的方法只要没指定不序列化,都会执行解决方法 Action中的业务方法前别加get 或者 set(属性的get set 除外) 用 @JSON(serialize=false)指定方法不序列化如import com.googlecode.jsonplugin.annotations.JSON;

SSH 框架打开项目自动执行action的一种方法

web.xml不配置任何东西 <welcome-file-list> <welcome-file></welcome-file> </welcome-file-list></span> 如上,为什么不把<welcome-file></welcome-file>也出掉,因为出掉之后会提示标签不完整. struts.xml如下 <action name="" class="index&quo

关于struts2种的action执行两次,或多次,或重复执行的bug

今天在做项目的时候发现一个bug,就是action会莫名其妙的执行两次,网上搜了很多帖子,关于这个问题也得到了一些处理方法,但是没有我想要的,造成执行两次活多次的问题呢,有很多种原因,我在这里只说一种 跳转到jsp的页面中,如果有 <img src="#" /> 这样的代码,就会跳转两次,src中只要是# ,就会跳转两次,这个真心恶心到我了-