3

如何将正则表达式数字类映射(\d)到操作?

例子:

/user/123 , /user/345,  /user/546456 ....
4

1 回答 1

1

使用高级通配符

高级通配符

从 2.1.9+ 开始,可以在动作名称中定义正则表达式。要使用这种形式的通配符,必须设置以下常量:

<constant name="struts.enable.SlashesInActionNames" value="true"/> 
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.patternMatcher" value="regex" />

正则表达式可以有两种形式,最简单的一种是 {FIELD_NAME},在这种情况下,FIELD_NAME动作中带有 的字段将填充匹配的文本,例如:

<package name="books" extends="struts-default" namespace="/">
    <action name="/{type}/content/{title}" class="example.BookAction">
        <result>/books/content.jsp</result>
    </action> 
</package>

在这个例子中,如果/fiction/content/Frankenstein请求 url,BookAction 的字段“ type”将被设置为“ fiction”,字段“ title”将被设置为“ Frankenstein”。

请注意,如果您需要prepare()方法中的这些参数,则需要一个调整好的 Interceptor Stack

于 2014-03-18T09:14:53.853 回答