处理一个 form 多个 submit的问题

fei得更高 2019-08-08 01:38:30
我照着Struts2教程做了一个处理一个 form 多个 submit的demo
struts.xml:

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="HelloWorld" extends="struts-default">
<action name="HelloWorld" class="com.hengrensoft.study.HelloWorldAction">
<result>/HelloWorld.jsp</result>
</action>
<action name="Sum" class="com.hengrensoft.study.SumAction">
<result name="positive">/positive.jsp</result>
<result name="negative">/negative.jsp</result>
</action>
<action name="MultiSubmit" class="com.hengrensoft.study.MultiSubmitAction">
<result name="save">/SubmitResult.jsp</result>
<result name="print">/SubmitResult.jsp</result>
</action>
<!-- Add your actions here -->
</package>
</struts>


MultiSubmit.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>My JSP 'hello.jsp' starting page</title>
</head>
<body>
<s:form action="MultiSubmit" >
<s:textfield name="msg" label="输入内容"/>
<s:submit name="save" value="保存" align="left" method="save"/>
<s:submit name="print" value="打印" align="left" method="print" />
</s:form>
</body>
</html>

MultiSubmitAction.java

package com.hengrensoft.study;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionSupport;

public class MultiSubmitAction extends ActionSupport implements ServletRequestAware
{

/**
*
*/
private static final long serialVersionUID = 1L;

private HttpServletRequest request;
private String msg;

public String getMsg()
{
return msg;
}
public void setMsg(String msg)
{
this.msg = msg;
}

public String save()
{
System.out.println("exe saving...");
request.setAttribute("result", "成功保存[" + msg + "]");
return "save";
}

public String print()
{
System.out.println("exe print...");
request.setAttribute("result", "成功打印[" + msg + "]");
return "print";
}

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


@Override
public void setServletRequest(HttpServletRequest request)
{
this.request = request;
}

}


结果在MultiSubmit.jsp那里点击保存,执行的是execute那里,没有去save执行,我用的是struts-2.5.20,请教大家,这是什么原因造成的?

...全文
479 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fei得更高 2019-08-22
  • 打赏
  • 举报
回复
https://www.cnblogs.com/tuqun/p/6474375.html 用这个还不错
达芬提 2019-08-19
  • 打赏
  • 举报
回复
为啥还选这样的框架的呢。
a_b_a_b_a_b_a_b 2019-08-19
  • 打赏
  • 举报
回复
Struts2确实好长时间不用了,配置也记不清楚了,要是用自己的方法好像是需要配置method的。看一下6楼推荐的文章吧
nayi_224 2019-08-19
  • 打赏
  • 举报
回复
有插件的话是不需要配置method的。总之先在浏览器直接输入.......MultiSubmit!save.action之类的东西确定是不是method的问题。 至于用struts标签处理form多提交的这套处理方法,建议无视。方法多得是,没必要用它这套方言。 如果非要用struts标签,建议只使用debug、if/elseif/else、iterator这三个。以后转别的框架时能方便些。
代码间的舞者 2019-08-17
  • 打赏
  • 举报
回复
把execute方法去掉。我印象中好像是,struts2会去找有没有execute方法,若有则执行execute方法,否则再根据方法名去找
李多肉同学 2019-08-15
  • 打赏
  • 举报
回复
你给struts中的action中加一个method="save",指定一下后台的方法试一下。
dmankill 2019-08-14
  • 打赏
  • 举报
回复
刚才查了下struts2 的action, 感觉你的action配置有问题,要定义method对应方法 https://blog.csdn.net/JoneZ/article/details/80471305
dmankill 2019-08-14
  • 打赏
  • 举报
回复
我很久没用struts2了上面的回答应该有问题,
dmankill 2019-08-14
  • 打赏
  • 举报
回复
继承ActionSupport接口默认走的execute
r00_a2lBUR 2019-08-14
  • 打赏
  • 举报
回复
不如在Action的标签里定义一下
fei得更高 2019-08-11
  • 打赏
  • 举报
回复
引用 1 楼 getdate 的回复:
现在用struts的已经不多了,爱莫能助啊!
请教一下,这个是为什么呢?
getdate 2019-08-09
  • 打赏
  • 举报
回复
现在用struts的已经不多了,爱莫能助啊!

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧