SpringMVC框架前端传递List限制大小256问题
来源:互联网 发布:淘宝上高科技的小东西 编辑:程序博客网 时间:2024/04/30 15:37
SpringMVC前端传递List到后台限制256问题
在做项目的时候,出现了一个问题,有个需求需要把前台长度很长的数组传递到后台进行保存,自己做的时候只是用了几十条数据进行测试,没啥问题,后面测试人员说当数据998条时报错了,数组下标越界
错误信息
03/03 14:46:13 [INFO] WebCommonInterceptor: >>>>>>> Finshed handling request[excel/getBatchSchoolListName]03/03 14:46:13 [ERROR] DispatcherServlet4App: Invalid property 'riskSchoolList[256]' of bean class [common.dto.QuotationDTO]: Index of out of bounds in property path 'riskSchoolList[256]'; nested exception is java.lang.IndexOutOfBoundsException: Index: 256, Size: 256org.springframework.beans.InvalidPropertyException: Invalid property 'riskSchoolList[256]' of bean class [common.dto.QuotationDTO]: Index of out of bounds in property path 'riskSchoolList[256]'; nested exception is java.lang.IndexOutOfBoundsException: Index: 256, Size: 256 at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:833) at org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:576) at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:553) at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:914) at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76) at org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:692) at org.springframework.validation.DataBinder.doBind(DataBinder.java:588) at org.springframework.web.bind.WebDataBinder.doBind(WebDataBinder.java:191) at org.springframework.web.bind.ServletRequestDataBinder.bind(ServletRequestDataBinder.java:112) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.doBind(AnnotationMethodHandlerAdapter.java:785) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:813) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:367) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:790) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at javax.servlet.http.HttpServlet.service(HttpServlet.java:821) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:89) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3748) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3714) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2283) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2182) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263) at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)Caused by: java.lang.IndexOutOfBoundsException: Index: 256, Size: 256 at java.util.ArrayList.RangeCheck(ArrayList.java:547) at java.util.ArrayList.get(ArrayList.java:322) at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:793) at org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:576) at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:553) at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:914) at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76) at org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:692) at org.springframework.validation.DataBinder.doBind(DataBinder.java:589) at org.springframework.web.bind.WebDataBinder.doBind(WebDataBinder.java:192) at org.springframework.web.bind.ServletRequestDataBinder.bind(ServletRequestDataBinder.java:113) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.doBind解决方案,在Action里重写SpringMVC限制的数组的方法:
@InitBinder public void initBinder(WebDataBinder binder) { // 设置List的最大长度 binder.setAutoGrowCollectionLimit(10000); }
这段代码我发现在项目在解决框架缺陷的时候已经在baseAction里重写了这个方法,在其他Action里是继承了baseAction,在开发环境里测试时没有问题的,但在测试环境里就不生效了,最后想到了两个解决方案,
1.直接在自己的Action在去重写上面的方法
2.在前台把数组转换成Json串,传到后台把Json串转换成集合
方案一:其实上面的那段代码写在baseAction里就是为了在其他的Action里不用重写了,但是在测试环境不生效,很郁闷,只有先这样子了
方案二: JSON.stringifier(myObject); 但传到后台是报错,应为存在特殊字符
方案三:开发环境可以,测试环境不可以,会不会是其他问题,于是又让部署人员清除下部署包缓存,但是还是没用,可能就是两个环境存在差异吧
最后还是用方案一解决的,因为时间比较紧,项目快上线了,而且如果改成json串,改动点比较多,最后还是决定用方案一
以前都不知道这个问题,工作也是一个学习的过程
0 0
- SpringMVC框架前端传递List限制大小256问题
- SpringMVC框架前端传递List限制大小256问题
- springmvc封装list个数限制问题
- spring-mvc限制前端传递list参数的长度为256
- 【Android】intent传递数据时,数据大小的限制问题
- 【Android】intent传递数据时,数据大小的限制问题
- 江湖问题研究-- intent传递有没有大小限制,是多少?
- springmvc传递list对象
- springMVC传递LIst
- post大小限制问题
- springmvc ajax 传递list参数
- postman传递list到springmvc
- 前端限制上传文件的大小
- intent传递有没有大小限制,是多少?
- intent传递有没有大小限制,是多少?
- SpringMVC提交参数绑定list时,默认配置如果list大小超过256,就会报错
- SpringMVC提交参数绑定list时,默认配置如果list大小超过256,就会报错
- SpringMVC参数传递方式list,map
- Compound Words
- 自考C++程序设计试题2010年10月
- 安卓带EditText的区域整体压缩
- 【BZOJ1997】[Hnoi2010]Planar【平面图判定】【2-SAT】
- linux下Apache配置
- SpringMVC框架前端传递List限制大小256问题
- 更改包名问题
- Python爬虫系列:1
- C++接口实现总结
- Java系统架构师应该具备的知识点
- 自适应中值滤波用于超声图像降噪
- 第二周项目3——小试循环(4)
- hdu1318 Palindromes(回文)
- mysql初始密码