struts 2は1つのform複数のsubmitを処理する

3050 ワード

Webアプリケーションでは、異なる作業を完了するために、1つのjspのformラベルに複数のsubmitがある可能性があります.次のコードがあります.
<s:form action="submit" method="post" namespace="/my">
<s:textfield name="msg" label="  :"></s:textfield>
<s:submit value="  " name="save" method="save"></s:submit>
<s:submit value="  " name="print" method="print"></s:submit>
</s:form>

 
複数のsubmitが同じactionにコミットされ、struts 2のactionデフォルトのexecute()はどのsubmitを判定できません.
したがって,要求パラメータにより実行される動作を判定する必要がある.
書式:アクション!method.action
---------------------------------------------------------------------
インスタンス.
---------------------------------------------------------------------
1.index.jspコード.
 
<%@taglib prefix="s" uri="/struts-tags"%>
...
<s:form action="submit" method="post" namespace="/my">
<s:textfield name="msg" label="  :"></s:textfield>
<s:submit value="  " name="save" method="save"></s:submit>
<s:submit value="  " name="print" method="print"></s:submit>
</s:form>
 
 
methodはstruts 2のactionを呼び出すメソッド名を指定します.
 
2.actionコード.(MoreSubmitAction)
package pro.action;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
public class MoreSubmitAction extends ActionSupport implements ServletRequestAware{

private String msg;
private HttpServletRequest request;

public MoreSubmitAction(){}
public String getMsg() {
return msg;
}
//  HttpServletRequest  
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
public void setMsg(String msg) {
this.msg = msg;
}
//  submit save  
public String save(){
request.setAttribute("msg",msg);
return "success";
}
//  submit print  
public String print(){
request.setAttribute("msg",msg);
return "success";
}
}

 
 
3.struts.xmlコード.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts2" namespace="/my" extends="struts-default">
<action name="submit" class="pro.action.MoreSubmitAction">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>