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에 지정되어 있습니다.
실마리가 있습니까? 도움이나 제안을 보내 주시면 대단히 감사하겠습니다.
미리 감사드립니다.
관련 @ModelAttribute로 시도하십시오 : [UTF-8 URL의 디코딩/인코딩] (http://stackoverflow.com/questions/8147837/utf-8-url-decode-encode) – informatik01
'00 % 204'는 '004'와 동일하지 않습니다. 그것은 '00 4'와 같습니다. 어쩌면 매개 변수가 이중으로 인코딩되어있을 수 있습니까? * – EJP
예, 죄송합니다. "00 4"여야합니다. 아니요, 매개 변수가 두 번 인코딩되지 않습니다. – user3489820