在Struts2中,可以使用通配符来实现动态调用。通配符有两种:Ognl 和 ActionMapper。下面分别介绍这两种方法。
在Struts2中,可以使用Ognl通配符来动态调用Action。例如,如果你有一个名为user
的Action,你可以使用以下方法动态调用它:
<s:url action="%{user}" />
这里,%{user}
是一个Ognl表达式,它会根据当前上下文动态解析为user
Action的类名。
Struts2还支持使用ActionMapper通配符来实现动态调用。首先,需要在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>
这里,我们创建了一个名为dynamic
的包,其中包含一个使用通配符的Action。%{1}
是一个ActionMapper通配符,它会根据请求的URL动态解析为Action的名称。
接下来,在JSP页面中,你可以使用以下方法动态调用这个Action:
<s:url action="%{dynamic/user}" />
这里,%{dynamic/user}
是一个Ognl表达式,它会根据当前上下文动态解析为dynamic
包下的user
Action。
总结一下,通过Struts2通配符实现动态调用的方法有两种:使用Ognl通配符和使用ActionMapper通配符。你可以根据自己的需求选择合适的方法。