有时候我们需要这样一种情况:
一个form表单,对应多个submit,需要提交到一个action,那么这时候我们应该怎么做呢?
其实struts1中就有关于多submit提交的处理方式,这里咱们只涉及以下struts2,有兴趣的同胞可以实现以下:
我们都知道请求到一个action可以根据struts.xml文件中method属性,来调用类里的不同方法,当然还有一种方式不用指定method,而通过请求,也可以实现同样的效果,语法如下:
login!validate.action
这个请求表示的是:我们要访问
login的action,执行相对应类里的
validate方法。
闲话少叙,跟我一起过一遍实例流程,你或许会明白一些:
1。新建web项目
2。加入我们struts2的jar包,并配置web.xml文件,增加struts2的过滤器。
<filter>
<filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3。
新建struts2的核心配置文件struts.xml
4。新建一个Action类。比如叫Login,里有delete和detail方法,和页面请求的方法名对应
:
public class LoginAction {
public Stringdelete(){System.out.println("delete operation"); return "delete"; }public Stringdetail(){System.out.println("detail operation"); return "detail"; }}
5。新建jsp页面,比如叫index.jsp,代码如下(我用html以及struts标签两种方式来实现,中间用分割线分开)
<body>
<form action="login.action" method="post">
<input type="submit"name="method:detail" value="detail1"><input type="submit"name="method:delete" value="delete1"></form> <hr><s:form action="login"><s:submitname="detail" value="detail" method="detail"></s:submit><s:submitname="delete" value="delete" method="delete"></s:submit></s:form>
</body>
6。修改我们的struts.xml文件,配置action节点,但是不用指定具体的method
<package name="login" extends="struts-default">
<!--
这里不用指定method属性,具体的method在请求里
-->
<action name="login" class="com.sun.demo.LoginAction">
<result name="detail">/detail.jsp</result><result name="delete">/delete.jsp</result></action></package>
7。新建detail.jsp和delete.jsp页面。
8。访问我们的index.jsp页面,看到页面中四个submit按钮,按下任意一个都可以看到相应的结果。
好了,先到这里吧,试验有结果吗?O(∩_∩)O~是不是比较简单~~
感谢: http://www.talentdigger.cn/home/space-512-do-blog-id-26466.html 的主人
实验结果:因为我需要文字链接的效果,所以用以下方法来提交:
<s:a href="menu!wenzi.action">文字链接效果</s:a>
下面另一博主写的一个提交到action的方法,先收下
感谢: http://www.talentdigger.cn/home/space-512-do-blog-id-26466.html 的主人
实验结果:因为我需要文字链接的效果,所以用以下方法来提交:
<s:a href="menu!wenzi.action">文字链接效果</s:a>
下面另一博主写的一个提交到action的方法,先收下
- <s:iterator value="#request.userList">
- <tr align="center">
- <td><s:property value="id"/> : <s:property value="username"/></td>
- <td><s:property value="age"/></td>
- <td><s:property value="sex"/></td>
- <td><s:property value="address"/></td>
- <td>
- <s:a href="userAction!addUser.action">添加</s:a> |
- //第一种方式,在标签内使用标签时用%
- <s:a href="userAction!loadUser.action?user.id=%{id}">编辑</s:a> |
- //第二种方式:使用<s:url>标签解决
- <s:url id="idUrl" action="userAction!delUser.action">
- <s:param name="user.id" value="%{id}"></s:param>
- </s:url>
- <s:a href="%{idUrl}">删除</s:a>
- //第三种:直接加入
- <a href="<s:url action="userAction!delUser.action">
- <s:param name="user.id" value="id"/>
- </s:url>">删除2
- </a>
- </td>
- </tr>
- </s:iterator>
感谢:http://liuzidong.iteye.com/blog/919289 的主人