2016-03-06 69 views
3

我推出了一個小型網站。區分大小寫的網址

我發現我收到用戶的錯誤,經過調查發現他們嘗試使用的網址都是小寫,而我已經將它們聲明爲camelCase。

我不知道爲什麼這些用戶應該嘗試使用所有小寫(我不能想象有人居然會花時間去改變:

www.mysite.com/myAction.do 

www.mysite.com/myaction.do 

然而,我不能想到這會改變,否則其他人會遇到這種情況:

然後,您的映射文件中的yourAction.do嘗試被用戶訪問爲您的action.do?

我正在使用Struts2.3.1,sitemesh 2.4.2 - 我從來沒有聽說過或遇到過這樣的情況,並希望對可能導致它的建議,如果你們中任何一位遇到過相同或類似的情況。

是否有任何瀏覽器將camelCase.do重新映射到camelcase.do?無論出於何種原因

唯一的「解決方案」我能想到的(最好出兩個非常醜陋不雅的解決方法)是複製動作映射在struts.xml中

<action name="myAction" class="myActionClass" /> 
<action name="myaction" class="myActionClass" /> //added extra but what a 'dumb' solution 

編輯:

是可以做同樣的方法?

這樣:

myAction!clear.do 

將仍與URL正確映射:

myaction!clEAr.do 

我注意到從重新讀取我的錯誤日誌,這是ULR中導致大多數錯誤的'錯誤的'方法。

回答

2

您可以使用regex模式匹配器(?i)將匹配標誌「嵌入」正則表達式正文中。例如

<constant name="struts.patternMatcher" value="regex" /> 

<action name="{(?i)myaction}" class="myActionClass" /> 
+0

謝謝!我已經添加了一個編輯,但也包含了同樣問題的方法。 –

+0

@Roman C +1很好的答案,即使我在尋找這:)但在我的情況下,它不會工作,因爲我使用{}和{(?i)myaction}總是執行第一個:p – goodyzain