2014-12-12 2 views
3

톰캣/스프링 구성이 GET 매개 변수를 자동으로 디코딩하지 않습니다. 자동으로 처리해야한다고 가정합니다.Tomcat/Spring - 디코딩되지 않은 매개 변수 얻기

다음
@RestController 
public class MyController { 
    @RequestMapping(value = "/do-something", method = RequestMethod.GET) 
    public String doSomething(RequestPojo req) { 
     // req.getPhone -- is not decoded, ie might be something like 00%204 instead of 004 
    } 
} 


public class RequestPojo { 
    private String phone; 
    // getter and setter 
} 

는 MVC-디스패처 - 서블릿의 내용입니다 : 내가 게시하기 전에 몇 가지 제안을 확인했습니다

<mvc:default-servlet-handler/> 
<mvc:annotation-driven> 
    <mvc:message-converters register-defaults="false"> 
     <ref bean="customJsonHttpMessageConverter"/> 
    </mvc:message-converters> 
</mvc:annotation-driven> 
<context:component-scan base-package="com.onoff.controller"> 
    <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/> 
</context:component-scan> 

<bean id="multipartResolver" name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <property name="maxUploadSize" value="1073741824"/> 
    <property name="defaultEncoding" value="utf8"/> 
</bean> 

<bean id="customJsonHttpMessageConverter" class="com.onoff.util.CustomJsonHttpMessageConverter"> 
    <property name="supportedMediaTypes" value="application/json; charset=utf-8"/> 
</bean> 

여기 내 설정입니다. URIEncoding="UTF-8"은 Tomcat의 server.xml에 지정되어 있습니다.

실마리가 있습니까? 도움이나 제안을 보내 주시면 대단히 감사하겠습니다.

미리 감사드립니다.

+0

관련 @ModelAttribute로 시도하십시오 : [UTF-8 URL의 디코딩/인코딩] (http://stackoverflow.com/questions/8147837/utf-8-url-decode-encode) – informatik01

+0

'00 % 204'는 '004'와 동일하지 않습니다. 그것은 '00 4'와 같습니다. 어쩌면 매개 변수가 이중으로 인코딩되어있을 수 있습니까? * – EJP

+0

예, 죄송합니다. "00 4"여야합니다. 아니요, 매개 변수가 두 번 인코딩되지 않습니다. – user3489820

답변

0

 
public String doSomething(@ModelAttribute RequestPojo req) { 
     // req.getPhone -- is not decoded, ie might be something like 00%204 instead of 004 
    }