在Struts2中,可以使用通配符來(lái)實(shí)現(xiàn)動(dòng)態(tài)調(diào)用。通配符有兩種:Ognl 和 ActionMapper。下面分別介紹這兩種方法。
在Struts2中,可以使用Ognl通配符來(lái)動(dòng)態(tài)調(diào)用Action。例如,如果你有一個(gè)名為user
的Action,你可以使用以下方法動(dòng)態(tài)調(diào)用它:
<s:url action="%{user}" />
這里,%{user}
是一個(gè)Ognl表達(dá)式,它會(huì)根據(jù)當(dāng)前上下文動(dòng)態(tài)解析為user
Action的類名。
Struts2還支持使用ActionMapper通配符來(lái)實(shí)現(xiàn)動(dòng)態(tài)調(diào)用。首先,需要在struts.xml
文件中配置ActionMapper:
<package name="default" extends="struts-default">
<action name="user" class="com.example.UserAction">
<result>/user.jsp</result>
</action>
<package name="dynamic" extends="struts-default">
<action name="*" class="com.example.DynamicActionMapper">
<param name="actionName">%{1}</param>
<result>/dynamic/${1}.jsp</result>
</action>
</package>
</package>
這里,我們創(chuàng)建了一個(gè)名為dynamic
的包,其中包含一個(gè)使用通配符的Action。%{1}
是一個(gè)ActionMapper通配符,它會(huì)根據(jù)請(qǐng)求的URL動(dòng)態(tài)解析為Action的名稱。
接下來(lái),在JSP頁(yè)面中,你可以使用以下方法動(dòng)態(tài)調(diào)用這個(gè)Action:
<s:url action="%{dynamic/user}" />
這里,%{dynamic/user}
是一個(gè)Ognl表達(dá)式,它會(huì)根據(jù)當(dāng)前上下文動(dòng)態(tài)解析為dynamic
包下的user
Action。
總結(jié)一下,通過(guò)Struts2通配符實(shí)現(xiàn)動(dòng)態(tài)調(diào)用的方法有兩種:使用Ognl通配符和使用ActionMapper通配符。你可以根據(jù)自己的需求選擇合適的方法。