一个 S2SH 整合后出现的调用问题
ACTION里的连个方法
Java code
public String getAllUser() throws Exception{
System.out.println("所有用户查询被执行。。。");
//this.userlist = us.getAllUser();
return SUCCESS;
}
public String getUserById() throws Exception{
System.out.println("单个用户查询被执行。。。");
/*System.out.println("id : u.getID" +u.getId());
u = us.getUserById(u.getId());*/ //屏蔽了暂时不调用
return INPUT;
}
struts.xml 配置
XML code
<action name="getAllUser" class="org.zhou.action.UserAction"
method="getAllUser">
<result name="success">/showUser.jsp</result>
<result name="input">/error.jsp</result>
</action>
<!-- -->
<action name="userById" class="org.zhou.action.UserAction"
method="getUserById">
<result name="success">/editUser.jsp</result>
<result name="input">/error.jsp</result>
</action>
中间没有其他业务逻辑
控制台:输出
SQL code
所有用户查询被执行。。。
所有用户查询被执行。。。
单个用户查询被执行。。。
问题一:
当我调用 getAllUser.action 他对应的getAllUser()方法调用了两遍
而且调用玩了 他还调用了 userById.action 对应的方法
实验:
ACTION里加
public void getA()throws Exception
{
System.out.println("A");
}
public String getB() throws Exception
{
System.out.println("B");
return null;
}
public String nogetC() throws Exception
{
System.out.println("C");
return null;
}
public String getD()
{
System.out.println("D");
return null;
}
public void getE(){
System.out.println("E");
}
输出:
B
D
结论:
Action 里 带有返回值的 getMthod() 方法都会被执行
不明白 求大虾们解释
------解决方案--------------------这问题有些诡异,是不是其他配置文件影响的...
------解决方案--------------------getUserById() 和 getAllUser()
struts会认为是给属性注入值,估计是这样
------解决方案--------------------
------解决方案--------------------struts2在进入action时会自动调用所有以get开头的方法,在跳出action时会自动调用所有以set为开头的方法。所以这边命令的时候,一般的方法不要以get,set开头,除非是你的变量(get、set方法)。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------单独使用spring3 就足够了。没必要整合