我有一个使用spring-mvc 3.0的应用程序。 控制器配置如下:
@RequestMapping(value = "/update", method = RequestMethod.POST)
public ModelAndView updateValues(
@RequestParam("einvoiceId") String id){
...}
当发布包含特殊字符的id(在本例中为pipe |),使用UTF-8(id = 000025D26A01%7C2014174)进行url编码时,字符串id将包含%7C。我期待spring-mvc url解码参数。我知道我可以使用
来解决这个问题java.net.URLDecoder.decode()
但由于我有大量的控制器,我希望这个由框架自动完成。
我已使用URIEncoding="UTF-8"
配置Tomcat连接器并配置了CharacterEncodingFilter
,但据我了解,这只会影响GET请求。
关于如何使spring-mvc url解码我的帖子参数的任何想法?
答案 0 :(得分:1)
http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q3 此页面说明CharacterEncodingFilter可以更改POST参数
答案 1 :(得分:0)
我相信你遇到了和我一样的问题。
尝试使用@PathVariable
代替@RequestParam
。
@PathVariable is to obtain some placeholder from the uri (Spring call it an URI Template) — see Spring Reference Chapter 16.3.2.2 URI Template Patterns
如果您这样做,则必须更改您的网址,并且不提供参数“id”。 只是“/ update / 000025D26A01%7C2014174”。 在我找到解决问题{(3}}
的解决方案的地方可以找到更多信息