java - Spring 将大量对象列表发送到 Controller

标签 java spring rest spring-mvc post

我遵循了 http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/ 中的代码将对象列表发布到我的 Spring Controller 。很快,当列表大小达到 256 时,我遇到了 IndexOutOfBoundsException。

我找到了 an answer其中表示在 WebDataBinder 中设置 setAutoGrowCollectionLimit 可以解决此问题。所以在我的 Controller 中我做了:

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.setAutoGrowCollectionLimit(2048);
}

@RequestMapping(value="/upload", method=RequestMethod.POST)
public String postData(Model model){
 
    List<Products> products =   //Some processing to get products list
    ProductList productList = new ProductList();
    productList.setProducts(products);
    System.out.println(“Total records loaded: "+products.size());
    model.addAttribute("productform", productList);
    return “upload”;
}

@RequestMapping(value=“/process”, method=RequestMethod.POST)
public String uploadProcessedData(@ModelAttribute("productform") ProductList productList){
    System.out.println(“Total records received: “+productList.getProducts().size());
    return "upload";
}

我的 JSP 代码:

<form:form method="post" action="${pageContext.request.contextPath}/process” modelAttribute="productform">
            <table>
                <tr>
                    <th>Record</th>
                    <th>name</th>
                </tr>
                <c:forEach var="product" items="${productform.products}" varStatus="status">
                    <tr>
                        <td><c:out value="${status.index + 1}" /></td>
                        <td><input name="products[${status.index}].name” value="${product.name}”/></td>
                    </tr>
                </c:forEach>
            </table>
            <input type="submit" value="Save" />
</form:form>

但是,我的表单有 1000 多条记录,而 Controller 只收到 556 条记录。为什么是这个数字?这是因为任何大小限制吗?如何让 Spring 加载所有 1000 多条记录。

最佳答案

对于大量数据,您可能希望在表单标记中添加 enctype=multipart/form-data,尤其是当负载中包含非 ASCII 字符时。这可能会以 block 的形式发送大量数据。

关于java - Spring 将大量对象列表发送到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33770131/

相关文章:

java - 如何将一周的第一天和一周的最后一天设置为白色?

java - Clob 到字符串 : BufferedReader vs getSubString()?

mysql - Spring和MySQL存储过程

java - 特定注释变量的AOP切入点表达式

使用 JAXB 实现 Spring Restful Web 服务的基于 Java 的配置

java - Java 中是否有一个可以读取数学函数的包(就像计算器一样)?

Spring boot aop 围绕 Datasource.getConnection 不起作用,有人知道吗?

java - 关于 RESTful 和 Shiro 集成的示例

rest - 如何从元数据中查找 OData 版本

java - 使用正则表达式删除前导零但保留减号