在开发过程中,struts.xml的配置过于复杂重复,所以想到了用通配符"*"。而url里面包含多个层级的话,又需要分开定义不同的包。所以想能不能在action的名称中加入斜杠。在google上查了一下资料,发现可行。
http://struts.apache.org/2.1.8/docs/wildcard-mappings.html
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="ptsystem" extends="json-default" namespace="/"> <action name="view*" class="{1}Action" method="view{1}"> <result name="success">/setting/{1}List.jsp</result> </action> <action name="*/toadd*" class="{2}Action" method="add{2}"> <result name="success">{1}/{2}Add.jsp</result> </action> </package> <!-- 上传附件定义 --> <constant name="struts.multipart.parser" value="jakarta">constant</constant> <constant name="struts.i18n.encoding" value="gbk" /> <constant name="struts.enable.SlashesInActionNames" value="true"/> </struts>
只需要加入一个常量定义,便可支持action名称中使用斜杠。
<constant name="struts.enable.SlashesInActionNames" value="true"/>