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" />

正規表現には 2 つの形式があります。最も単純なものは です {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>

この例では、url/fiction/content/Frankensteinが要求された場合、BookAction のフィールド " type" が " " に設定されfiction、フィールド " title" が " " に設定されFrankensteinます。

prepare()メソッドでこれらのパラメーターが必要な場合は、調整された Interceptor Stack が必要であることに注意してください。

于 2014-03-18T09:14:53.853 に答える