【问题标题】:Spring POST a large list of objects to controllerSpring向控制器发布大量对象列表
【发布时间】:2015-11-18 01:15:38
【问题描述】:

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

我发现an answer 说在 WebDataBinder 中设置 setAutoGrowCollectionLimit 可以解决这个问题。所以在我的控制器中我做了:

@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 多条记录,而控制器只收到 556 条记录。为什么是这个数字?这是因为任何尺寸限制吗?如何让 Spring 加载所有 1000 多条记录。

【问题讨论】:

    标签: java spring rest spring-mvc post


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-09-01
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多