2014-09-20 94 views
4

客戶端服務器上的發送(實施無所謂):在何處以及如何解碼@PathVariable

/path/items/ + urlencode(id, SOME_ENCODING) 

考慮結果的網址爲:

/path/items/my%2Fkey 

因此,我對服務器:

@RequestMapping(value = "/path/items/{identifier}", method = RequestMethod.GET) 
public Item get(@PathVariable String identifier) { 
try { 
    return DAO.getItemByIdentifier(URLDecoder.decode(identifier, SOME_ENCODING)) 
} 
catch (UnsupportedEncodingException e) { 
... 
} 

有沒有辦法在內部做到這一點?我的意思是得到標識已解碼的,所以我可以只:

@RequestMapping(value = "/path/items/{identifier}", method = RequestMethod.GET) 
    public Item get(@PathVariable String identifier) { 
return DAO.getitemByidentifier(identifier); // already decoded! 
    } 
+1

這是自動完成的。當我向'/ my%20key'發送請求時,我在路徑變量中獲得'我的密鑰'。 – 2014-09-20 08:14:40

回答

2

你可以使用Spring的CharacterEncodingFilter類的web.xml作爲過濾器,如下所示:

<filter> 
    <filter-name>CharacterEncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>CharacterEncodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
相關問題