2014-07-10 88 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