我有一个在前端使用Spring MVC和Jquery的Web应用程序。从jsp到控制器的数据绑定对于小数据来说效果很好而且花花公子。我的表单绑定到包含对象列表的对象。
当它试图处理 3000 记录时出现问题,myList
上只找到 2000 记录。 10000 记录,myList
包含null
Public class DataBindingObject{
private List<MyObject> myList
}
/**
*This is my controller
*/
@RequestMapping(value="/submit", method=RequestMethod.POST)
public ModelAndView submitRequest(@ModelAttribute("submitAllocations") DataBindingObject dto) throws ServiceException {
ModelAndView mav = new ModelAndView("redirect:/search");
}
如果我达到最大尺寸,我检查了tomcat日志,但没有。 我错过了什么?提前谢谢!
修改:
如果将整个请求有效负载发送到控制器,我使用Firebug进行了检查,显然确实如此。出于某种原因,控制器无法绑定整个请求有效负载。奇怪的是,对于相当大的数据,它似乎被限制在2000,而对于大数据,似乎是null
。我们的应用程序使用WebDataBinder
将请求绑定到我们的对象中,似乎其中存在问题。
/**
* Sets the initial list size for arrays used in ModelAttributes.
*
* @param dataBinder
*/
@InitBinder
private void initBinder(WebDataBinder dataBinder) {
dataBinder.setAutoGrowCollectionLimit(listSizeLimit);
}
答案 0 :(得分:0)
我们终于找到了罪魁祸首! Tomcat有maxPostSize
,maxPostSize
maxParameterCount
设置限制了我们的请求!奇怪的是,它并没有像我从其他人那里读到java.lang.IllegalStateException
,这使得调试变得如此困难。
我刚刚在位于server.xml
的{{1}}添加了这些设置,并将其设置为my/tomcat/directory/conf
或-1
以禁用限制。
但我并不在乎为什么它不会抛出异常。但我很高兴我们找到了解决方案。
0
参考: http://sisis.bth.rwth-aachen.de:8080/docs/config/ajp.html