SpringMVC提交数组时不能超过256个值(转)

Posted historylyt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC提交数组时不能超过256个值(转)相关的知识,希望对你有一定的参考价值。

项目遇到了这个错误,spring mvc 竟然还有这个漏洞.

org.springframework.beans.InvalidPropertyException: Invalid property detail[256] of bean class [com.suning.asvp.mer.entity.InviteCooperationInfo]: Index of out of bounds in property path detail[256]; nested exception is java.lang.IndexOutOfBoundsException: Index: 256, Size: 256  
    at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:833) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE]  
    at org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:576) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE]  
    at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:553) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE]  
    at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:914) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE]  
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76) ~[spring-beans-3.1.2.RELEASE.jar:3.1.2.RELEASE]  
    at org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:692) ~[spring-context-3.1.2.RELEASE.jar:3.1.2.RELEASE]  
    at org.springframework.validation.DataBinder.doBind(DataBinder.java:588) ~[spring-context-3.1.2.RELEASE.jar:3.1.2.RELEASE]  
    at org.springframework.web.bind.WebDataBinder.doBind(WebDataBinder.java:191) ~[spring-web-3.1.2.RELEASE.jar:3.1.2.RELEASE]  
    at org.springframework.web.bind.ServletRequestDataBinder.bind(ServletRequestDataBinder.java:112) ~[spring-web-3.1.2.RELEASE.jar:3.1.2.RELEASE]  

解决方案,在Action里重写SpringMVC限制的数组的方法:

@InitBinder  
public void initBinder(WebDataBinder binder) {  
    // 设置List的最大长度  
    binder.setAutoGrowCollectionLimit(10000);  
}  
这段代码我发现在项目在解决框架缺陷的时候已经在baseAction里重写了这个方法,在其他Action里是继承了baseAction,在开发环境里测试时没有问题的,但在测试环境里就不生效了,最后想到了两个解决方案,
  .直接在自己的Action在去重写上面的方法 
  2.在前台把数组转换成Json串,传到后台把Json串转换成集合
方案一:其实上面的那段代码写在baseAction里就是为了在其他的Action里不用重写了,但是在测试环境不生效,很郁闷,只有先这样子了
方案二: JSON.stringifier(myObject); 但传到后台是报错,应为存在特殊字符
方案三:开发环境可以,测试环境不可以,会不会是其他问题,于是又让部署人员清除下部署包缓存,但是还是没用,可能就是两个环境存在差异吧
最后还是用方案一解决的,因为时间比较紧,项目快上线了,而且如果改成json串,改动点比较多,最后还是决定用方案一
以前都不知道这个问题,工作也是一个学习的过程

原文地址:https://blog.csdn.net/zeng_huabin/article/details/50839218

 

以上是关于SpringMVC提交数组时不能超过256个值(转)的主要内容,如果未能解决你的问题,请参考以下文章

Androidcropper不能超过256?

使用 enumerate() 时出现“ValueError:需要超过 2 个值才能解压”

子查询返回超过 1 个值。这是啥意思?

2048 游戏 - AI 的平均得分不能超过 256

有没有办法获得超过 1 个值?

springMVC乱码问题-转