2014-07-10 60 views
0

我的Spring控制器中有一个post方法,它接受一个名为wkt的请求参数。这里是我的方法签名:对于长字符串缺少Spring post请求参数

@RequestMapping(value="/getNumberOfProperties", method=RequestMethod.POST) 
public String getEstimateForNumberOfProperties(@RequestParam("wkt") String wkt) { 
    //code 
} 

在我的jQuery中,我打电话这样的方法。

$.post(webroot + "/project/getNumberOfProperties", {wkt : wktGeomFromServer}) 

This works great。然而,我得到这个太长的字符串错误。

org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'wkt' is not present 
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:255) ~[spring-web-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:95) ~[spring-web-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:79) ~[spring-web-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:157) ~[spring-web-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:124) ~[spring-web-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) ~[spring-webmvc-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) ~[spring-webmvc-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690) ~[spring-webmvc-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) ~[spring-webmvc-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) [spring-webmvc-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) [spring-webmvc-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) [spring-webmvc-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) [spring-webmvc-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) [servlet-api.jar:?] 
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) [spring-webmvc-4.0.2.RELEASE.jar:4.0.2.RELEASE] 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) [servlet-api.jar:?] 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) [catalina.jar:7.0.41] 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.41] 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) [spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE] 

那么多久太久了?在做了一些测试后,我发现如果字符串的长度是1,971,324 or less一切正常。否则,我会得到上述例外。我不知道这是Spring还是tomcat等。另外,我已经通过Chrome验证过,无论长度如何,wkt参数都会在所有情况下发送。所以当Spring的错误信息太长时,对我来说没有多大意义。 1,971,324某处有些神奇数字吗?

有什么建议吗?

+0

检查您发送的HTTP请求 –

+0

我不太了解jquery。该参数是在正文中发送还是作为URL的一部分发送? –

+0

@Sotirios它是在身体发送(这实际上是我为什么切换到后处理方法,以处理更长的参数) – jlars62

回答

1

它可能是服务器配置问题?例如,默认情况下,Tomcat的最大发布请求内容大小为2MB。

+0

我认为我的错误在这种情况下会有所不同。但我会研究。 – jlars62