Struts2的動態呼叫Action方法和預設Action
阿新 • • 發佈:2018-12-26
動態呼叫:
在瀏覽器裡輸入http://localhost:8080/專案名/Action名!方法名,即可以實現動態呼叫,而不需要為Action中的每個方法都在struts.xml進行action的配置。注意:要把struts.enable.DynamicMethodInvocation的值為true,如
<constant name="struts.enable.DynamicMethodInvocation" value="true" />,否則無法動態訪問
Action.java
struts.xmlimport com.opensymphony.xwork2.ActionSupport; public class TestActionDynamic extends ActionSupport{ @Override public String execute() throws Exception { System.out.println("TestActionDynamic execute..."); return super.execute(); } public String add(){ System.out.println("TestActionDynamic add..."); return SUCCESS; } public String del(){ System.out.println("TestActionDynamic del..."); return SUCCESS; } public String updata(){ System.out.println("TestActionDynamic updata..."); return SUCCESS; } }
在瀏覽器輸入http://localhost:8080/Struts2/testDynamic!del 就是呼叫TestActionDynamic中的del方法<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <span style="color:#ff0000;"><constant name="struts.enable.DynamicMethodInvocation" value="true" /></span> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="testDynamic" class="com.zucc.action.TestActionDynamic" > <result >/Hello.jsp</result> </action> </package> </struts>
預設Action:
在<package>下配置<default-action-ref name="Actio名"></default-action-ref>,如果在瀏覽器中輸入的Actio名無效,即自動訪問預設的Actio
注意:在struts2.3.4以下如果設了預設Action,再進行動態呼叫Action,會出現錯誤,在struts2.3.4以上就不會發生錯誤。
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <span style="color:#ff0000;"><default-action-ref name="testDynamic"></default-action-ref></span> <action name="testDynamic" class="com.zucc.action.TestActionDynamic" > <result >/Hello.jsp</result> </action> </package> </struts>
在瀏覽器輸入http://localhost:8080/Struts2/任意字串, 就是呼叫名為TestActionDynamic的Action