gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:44:26 27 4
gpt4 key购买 nike

我遵循了 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com