路径变量包含特殊字符时的异常,例如〜!@#$%^& *()<>

时间:2015-05-07 07:30:28

标签: java spring rest backbone.js

如果路径变量包含特殊字符,则Spring抛出异常。我尝试了以下解决方案: -

<filter>
    <filter-name>encodingFilter</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>
</filter>

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

但即便这样做后我也无法解决问题。我有url-pattern / editMode / *。但即使改变了url模式,它仍然可以工作。 我也使用backbone1.1.2框架作为前端,内部使用encodeURIComponent但仍然存在问题。

2 个答案:

答案 0 :(得分:0)

尝试对路径变量进行url编码,如下所示:

localhost/editMode?var=example%23

如果你想发送变量'example#'

HTML URL Encoding Reference

如果在服务器端创建这些URL,则可以使用实用程序类对它们进行URL编码。示例:URLEncoder

答案 1 :(得分:0)

因为我正在使用骨干框架所以我已经覆盖了url形成功能。在encodeURIComponent的帮助下,我能够对名称进行编码,并且spring会自动解码名称。现在一切都很完美:)。 感谢Kuurde和M.Deinum指出我正确的方向。