处理Spring-mvc的post参数中的特殊字符

时间:2011-08-31 12:53:25

标签: java spring-mvc

我有一个使用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解码我的帖子参数的任何想法?

2 个答案:

答案 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}}

的解决方案的地方可以找到更多信息