2017-04-21 28 views
-1

我試圖通過電子郵件進入的路徑變量,但它給了我一個錯誤: 這裏是功能:如何通過電子郵件內pathVariable使用彈簧

@RequestMapping(value = "login/{email}", method = RequestMethod.OPTIONS) 
public void Login(HttpServletResponse response, @PathVariable String email) { 
    sendOptions(response); 
} 

錯誤:

http://localhost:8080/demo/login/[email protected] 406 (Inacceptable)

如何解決這個問題??

+0

[URLEncode](https://www.urlencoder.org/)它,例如與['URLEncoder'](https://docs.oracle.com/javase/8/docs/api/java/net/URLEncoder.html)(並使用['URLDecoder'](https://docs.oracle.com)解碼的.com/JavaSE的/ 8 /文檔/ API/JAVA /淨/ URLDecoder.html))。 – Thomas

+0

我不明白 –

+1

「@」在網址中是不允許的,因此電子郵件需要編碼。 – Thomas

回答

0

嘗試把下面的代碼在web.xml,並檢查是否正常工作

<init-param> <param-name>dispatchOptionsRequest</param-name> <param-value>true</param-value> </init-param>

1

@保留字符的URL,而不應在URL中使用。你需要編碼你的URL。在@RequestMapping

method = RequestMethod.POST, 
     produces = "application/json; charset=utf-8" 
+0

該怎麼做? –

+0

請參閱java中的URLEncoder類。 – JRR

0

如果使用AJAX使用這種數據發送辦法。

0

試試這個

headers: { 
Accept : "application/json"} 

。使用POST,

@RequestMapping(value = "login/{email:.+}", method = RequestMethod.OPTIONS) 
public void Login(HttpServletResponse response, @PathVariable(name="email") String email) { 

編碼也是另一其他:

0

正如Jaydeep拉吉普特說,你應該編碼的網址,你可以編碼這樣的電子郵件:

[email protected] = STD%40gmail.com

你可以找到的ASCII編碼參考逃避任何角色。可以使用JavaScript Scape Function