Wildcard:通配符
使用通配符将配置量降到最低,一定要遵守约定优于配置的原则
操作:
(1)StudentAction:
package wildcard.action; import com.opensymphony.xwork2.ActionSupport; public class StudentAction extends ActionSupport { public String add() { return "success"; } public String delete() { return "success"; } } (2)TeacherAction:
package wildcard.action; import com.opensymphony.xwork2.ActionSupport; public class TeacherAction extends ActionSupport { public String add() { return "success"; } public String delete() { return "success"; } } struts.xml配置:
<constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.devMode" value="true" /> <package name="front" namespace="/front" extends="struts-default">
<action name="student*" class="wildcard.action.StudentAction" method="{1}"> <result name="success_{1}"> /Student{1}_success.jsp </result> </action> <action name="*_*" class="wildcard.action.{1}Action" method="{2}"> <result > /{1}_{2}_success.jsp </result> </action>
运行:
运行时依旧namespace后面加上action的name属性,第一个*找到Action,第二个*找到方法,两个*找到对应的jsp页面。
注意:
如果action的return返回字符串修改了,不是默认的"success",一定要在result标签的添加name属性,通配符表示一致。
ex:
package wildcard.action; import com.opensymphony.xwork2.ActionSupport; public class StudentAction extends ActionSupport { public String add() { return "success_add"; } public String delete() { return "success_delete"; } } xml里, 修改为:
<action name="student*" class="wildcard.action.StudentAction" method="{1}" > <result name="success_{1}"> /Student{1}_success.jsp </result> </action>