一个大的Struts项目可能有许多的Action,struts-config.xml会因此变得很复杂。为了解决这个问题,struts 1.2 版本struts-config.xml中,允许使用通配符。
<action path="/*Subscription"
type="org.apache.struts.webapp.example.EditSubscriptionAction"
name="subscriptionForm"
scope="request"
validate="false">
<forward name="failure" path="/failure.jsp"/>
<forward name="success" path="/subscription{1}success.jsp"/>
</action>
使用通配符这段,关键点有两处,
-
第一:path="/Subscription",这里使用了来通配前面的add和edit,
-
第二: ,这里使用{1}来表示*所代表的--也就是说,如果在页面表单里面这样写,那么forward到success的时候,就是forward到/subscriptioneditsuccess.jsp页面。
现在详细介绍一下通配符的用法。struts配置文件中标签的path属性,可以使用下列三种通配符:
- * :可以匹配0个或多个字符,但不能匹配"/"
- ** :可以匹配0个或多个字符,且可以匹配"/"
- \character :用来转译*和\
通配符所代表的实际的值可以用{N}来引用,其中N可以等于0~9。N的含义是:
- {0} 代表整个path代表的所有字符--不包括第一个/,如path=“/Subscription”中的是add,那么{0}就是addSubscription。
- {1} 代表第一个通配符(包括*, **, \character)所表示的实际内容,如path=“/Subscription”中的是add,那么{1}就是add。
- {2} 代表第二个通配符(包括*, **, \character)所表示的实际内容,如path=“/Subscription”中的第一个是add而第二个是test,那么{1}就是add,{2}就是test
- {3}~{9} 类似{1}, {2}
可以使用{N}的属性有:
- type
- name
- roles
- parameter
- attribute
- forward
- include
- input
可以使用{N}的属性有:
- path