當有多個同名的action可怎麼辦呢?
阿新 • • 發佈:2019-01-25
問題引出:如果有好幾個form的action都是regist,但是又希望對應不同的class,我們就可以設定不同的package來定義不同的namespace,這樣當訪問同名的action,只要namespace設定對了就可以正確訪問到class,例子如下
struts.xml檔案內容如下
<package name="default" namespace="/" extends="struts-default"> <action name="regist" class="action.RegistOne"> <result>/content/success.jsp</result> </action> </package> <package name="one" namespace="/test1" extends="struts-default"> <action name="regist" class="action.RegistTwo"> <result>/content/success.jsp</result> </action> </package> <package name="two" namespace="/test2" extends="struts-default"> <action name="regist" class="action.RegistThree"> <result>/content/success.jsp</result> </action> </package>
定義三個類RegistOne、RegistTwo、RegistThree,用來標識不同的class,內容都差不多,我就不都貼出來了
package action; import com.opensymphony.xwork2.ActionSupport; public class RegistOne extends ActionSupport { @Override public String execute() throws Exception { // TODO Auto-generated method stub System.out.println("這裡是RegistOne"); return super.execute(); } }
JSP檔案這樣寫
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <s:form action="regist" namespace="/"> <s:submit value="訪問one"/> </s:form> <s:form action="regist" namespace="/test1"> <s:submit value="訪問two"/> </s:form> <s:form action="regist" namespace="/test2"> <s:submit value="訪問three"/> </s:form> </body> </html>
這樣當我們按第一個按鈕的時候應該就可以訪問到第一個class啦~