关于struts2 一个action多个submit按钮的有关问题

关于struts2 一个action多个submit按钮的问题
简单描述下,需求很简单。我在一个s:form中有2个submit按钮需要提交,但是不能使用js。
目前方式在网上找的例子,简单贴一下:

struts.xml
<package name="customer" namespace="/customer" extends="struts-default">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="info" class="com.hx.er.action.customer.CustomerInfoAction">
<result name="save" type="redirect">
home-init
</result>
<result name="back" type="tiles">
customer-info
</result>
</action>
</package>

info.jsp
<s:form action="/customer/info" theme="simple" method="post">
<!-- 省略没必要的部分 -->
<s:submit name="save" method="info_save" value="保存" cssStyle="width:60px" />
<s:submit name="back" method="info_back" value="返回" cssStyle="width:60px" />
</s:form>

CustomerInfoAction
public class CustomerInfoAction extends ActionSupport {
public String save() {
System.out.println("save");
return "save";
}

public String back() {
System.out.println("back");
return "back";
}
}

结果如下:不管我点save还是back按钮。日志都提示我没有success这个result。加上success以后,系统就按照这个结果直接跳转了,并没有执行save()或back()。
补充下:我设置了一个拦截器,但是目测与拦截器关系似乎不大,删除拦截器以后,执行结果仍然没变。
环境:jdk7、struts2.3.15。

请各位协助解决。提前谢谢了。
struts2 action 多个submit

------解决方案--------------------
按钮提交都一个action
------解决方案--------------------
都是info那个方法
------解决方案--------------------
引用:
简单描述下,需求很简单。我在一个s:form中有2个submit按钮需要提交,但是不能使用js。
目前方式在网上找的例子,简单贴一下:

struts.xml
<package name="customer" namespace="/customer" extends="struts-default">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="info" class="com.hx.er.action.customer.CustomerInfoAction">
<result name="save" type="redirect">
home-init
</result>
<result name="back" type="tiles">
customer-info
</result>
</action>
</package>

info.jsp
<s:form action="/customer/info" theme="simple" method="post">
<!-- 省略没必要的部分 -->
<s:submit name="save" method="info_save" value="保存" cssStyle="width:60px" />
<s:submit name="back" method="info_back" value="返回" cssStyle="width:60px" />
</s:form>

CustomerInfoAction
public class CustomerInfoAction extends ActionSupport {
public String save() {
System.out.println("save");
return "save";
}

public String back() {
System.out.println("back");
return "back";
}
}

结果如下:不管我点save还是back按钮。日志都提示我没有success这个result。加上success以后,系统就按照这个结果直接跳转了,并没有执行save()或back()。
补充下:我设置了一个拦截器,但是目测与拦截器关系似乎不大,删除拦截器以后,执行结果仍然没变。
环境:jdk7、struts2.3.15。

请各位协助解决。提前谢谢了。


这里没有给定你要执行的哪个方法 一般会默认执行 execute 也就是父里的  你要给执行方法定义。
至于两个submit··一直都是js的路过

------解决方案--------------------
楼上正解,struts父类的execute方法返回的是success,你没定义所以一直报错了。在struts配置文件中指定下method。
------解决方案--------------------
思路是Override父类的execute()方法,从里边取出方法名method:save,然后获取save。最后用反射机制invoke一下