2017-05-16 17 views
1

此代碼的動作名稱對我的作品如預期:使用正則表達式作爲支柱

<action name="{paramOne}/{paramTwo}/details" 
class="myactionclass" 
method="execute"> 
     <result name="success">/mypage.jsp</result> 
</action> 

我能找回我的動作類paramOne和paramTwo的值。 但請求url中的paramOne有可能只有我預先定義的值嗎?就像,我可以寫一些正則表達式或做其他事情,這樣我的paramOne只有一個我已經預定義的值。如果paramone的值不是允許值,則不應調用操作類。

<action name="/{type}/{value:.+}/list" 

我也想知道上面表達式中的「。+」是什麼意思?如果我想我的paramOne只有值真或假..我可以實現它如下?

<action name="/{type}/{paramOne:(true|false)}/list" 
+0

首先,您應該啓用模式匹配器,然後編寫正則表達式。 –

回答

0

https://struts.apache.org/docs/wildcard-mappings.html#WildcardMappings-AdvancedWildcards

從2.1.9+正則表達式可以定義在操作名稱定義。 [...] 正則表達式也可以是{FIELD_NAME:REGULAR_EXPRESSION}的形式。正則表達式是普通的Java正則表達式。

+0

是的,正則表達式正在工作。但是當我在我的正則表達式中使用'*'時,它會在java/util/treemap.java中拋出一個空指針異常。 – user5739878

+0

我希望我的參數2有10個允許的值。我是否應該將正則表達式中的每個值指定爲:value1 | value2 | .. 等等?我可以使用某種變量來存儲允許的值嗎? – user5739878