2014-02-12 86 views
9

我在SpringMVC控制器中遇到了@PathVariable問題。每當我傳遞包含加號('+')的字符串時,加號會被空格替換。對參數編碼不起作用。SpringMVC:包含加號(+)字符的@PathVariable值

因此,例如,如果我請求url myapp/resend-validation/[email protected],我會在我的email變量中獲得「my [email protected]」。請求後,同樣的情況myapp/resend-validation/my%[email protected]

我的控制器看起來是這樣的:

@RequestMapping(value = "/resend-validation/{email:.+}") 
public String resendValidation(@PathVariable String email, HttpServletRequest request, Model model) { 
    //controller code here 
} 

(在@ RequestMapping價值的正規表示法是因爲在電子郵件中的點地址,否則,數值被截斷後點。它不影響我的問題)

在此先感謝您的任何幫助。

+0

您使用的是什麼版本的Spring?我無法在'3.2.6.RELEASE'中重現這一點。當我請求'myapp/resend-validation/my + mail @ gmail.com'時,我在電子郵件變量(無空格)中獲得了'my + mail @ gmail.com' –

+0

我無法用4.0.0+ 。適用於3.0.5。 –

+0

我們在Spring 3.1.3上。我會嘗試測試其他版本,並提供一些我們可能使用的特殊配置。感謝您的反饋。 – Kejml

回答

1

傻逼我!完全不同的部分是錯誤的。我使用Ajax調用控制器,其中包含一些JavaScript處理,並且存在缺陷 - 它將「plus」替換爲「space」而不是調用服務器。感謝大家爲此付出的時間。