For some reason my Tomcat/Spring configuration doesn't automatically decode the GET parameters ( I assume it should be done automatically ).
Here is my setup:
@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 } Here is the content of mvc-dispatcher-servlet:
<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> I've checked some suggestions before posting. URIEncoding="UTF-8" is specified in server.xml in Tomcat.
Any clues? Any help/suggestions will be highly appreciated.
Thank you in advance.
00%204isn't the same as004. It's the same as00 4. Maybe your parameters are being doubly encoded?