我正在尝试通过 Spring MVC 发送 POST 类型的大型 AJAX 请求。该请求包含表示在网格中选择的行的 ID 的数据。请求看起来像这样,其中 N 约为 30,000:
POST /foo/view? HTTP/1.1
Host: localhost:8443
Connection: keep-alive
Content-Length: 618953
Accept: text/html, */*; q=0.01
Origin: https://localhost:8443
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: https://localhost:8443/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
表单数据包含编码selections
:
selection=1
selection=2
selection=...
selection=n
映射到处理这个请求的控制器方法注释如下:
@RequestMapping(method = RequestMethod.POST, value = "/foo/view")
public void controllerMethod(User user, @ModelAttribute CustomModelMap inModel, BindingResult result) {
...
}
其中 CustomModelMap 仅包含访问器/修改器以将选择映射到集合。
我遇到的问题是,当我点击控制器时,ModelMap 只填充了 9,997 个选择(当请求包含超过 9,997 个选择时,它总是这个数字)。我三次检查了我发送的 AJAX 请求,以确保确实有 30,000 个选择。
我想也许我的网络服务器不喜欢请求标头中的大量数据,但请求总数约为 600k,而 Tomcat 似乎默认允许最多 2mb 用于 POST。
关于我还能检查什么的任何想法?