struts 2は1つのform複数のsubmitを処理する
3050 ワード
Webアプリケーションでは、異なる作業を完了するために、1つのjspのformラベルに複数のsubmitがある可能性があります.次のコードがあります.
複数のsubmitが同じactionにコミットされ、struts 2のactionデフォルトのexecute()はどのsubmitを判定できません.
したがって,要求パラメータにより実行される動作を判定する必要がある.
書式:アクション!method.action
---------------------------------------------------------------------
インスタンス.
---------------------------------------------------------------------
1.index.jspコード.
methodはstruts 2のactionを呼び出すメソッド名を指定します.
2.actionコード.(MoreSubmitAction)
3.struts.xmlコード.
<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>