java - AJAX 请求被 Spring MVC 截断

标签 java ajax spring spring-mvc

我正在尝试通过 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

并且表单数据包含编码的选择:

选择=1 选择=2 选择=... selection=n

映射到处理这个请求的 Controller 方法注释如下:

@RequestMapping(method = RequestMethod.POST, value = "/foo/view")
public void controllerMethod(User user, @ModelAttribute CustomModelMap inModel, BindingResult result) {
...
}

其中 CustomModelMap 仅包含访问器/修改器以将选择映射到集合。

我遇到的问题是,一旦我点击 Controller ,ModelMap 就只填充了 9,997 个选择(当请求包含超过 9,997 个选择时,总是这个数字)。我对发送的 AJAX 请求进行了三次检查,以确保确实有 30,000 个选择。

我想也许我的网络服务器不喜欢请求 header 中的大量数据,但请求总计大约 600k,而 Tomcat 似乎默认允许 POST 最多 2mb。

关于我还可以检查什么的任何想法?

最佳答案

如果您发出 GET 请求,则 URL 的长度有限制,这取决于您的 HTTP 服务器/应用程序服务器。如果您将此请求更改为表单编码的 POST 请求并将该信息放入正文中,您可能会避免该问题。

关于java - AJAX 请求被 Spring MVC 截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556575/

相关文章:

java - 获取名称为 DAO 类的 Bean 创建异常

java - 具有真正有值(value)特征的斯坦福分类器

java - Hazelcast 自动发现如何工作?

java - PHP 客户端和 Java 服务器之间的 SSL 套接字连接

java - DDD : status - Value Object or Entity?

ajax - 无法使用 jmeter 从响应中提取简单数据

java - Spring aop 多个切入点和建议,但只有最后一个有效

javascript - knockout.js observableArray 未被识别为函数

javascript - 从表单字段提交数组到数据库

java - 构造函数中的 Spring 非必需属性?