出现的场景是: 前端 提交一个form 里面包含 一个list里面的对象有 427 个
注意其中的一个类 DataBinder.java:859
进入后看到
public static final int DEFAULT_AUTO_GROW_COLLECTION_LIMIT = 256;
*/
public class DataBinder implements PropertyEditorRegistry, TypeConverter {
/** Default object name used for binding: "target" */
public static final String DEFAULT_OBJECT_NAME = "target";
/** Default limit for array and collection growing: 256 */
public static final int DEFAULT_AUTO_GROW_COLLECTION_LIMIT = 256;
/**
* We'll create a lot of DataBinder instances: Let's use a static logger.
*/
protected static final Log logger = LogFactory.getLog(DataBinder.class);
private static Class<?> javaUtilOptionalClass = null;
static {
try {
javaUtilOptionalClass =
ClassUtils.forName("java.util.Optional", DataBinder.class.getClassLoader());
}
catch (ClassNotFoundException ex) {
// Java 8 not available - Optional references simply not supported then.
解决办法
1)修改业务,不允许一次提交超过256条数据
2)在需要的Action中添加InitBinder方法。如果所有Action都需要添加……不仅工作量很大,而且代码冗余很难看
//在当前Controller中加 或者 在 BaseController 中加入
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setAutoGrowCollectionLimit(Integer.MAX_VALUE);
}
//或者 采用 @ControllerAdvice
package cn.mwee.wpos.report.aspect;
import cn.mwee.wpos.common.config.AppConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
import javax.servlet.http.HttpServletRequest;
/**
* Created by luob on 2017/9/21.
*/
@ControllerAdvice
public class CollectionGrowLimitAdvice {
@Autowired
private AppConfig appConfig;
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setAutoGrowCollectionLimit(appConfig.getCollectionGrowLimit());
}
}
3)增加一个WebBindingInitializer类,并在xml中配置。推荐大笑(如果你不知道改哪个xml文件,先好好学习一下SpringMVC吧奋斗)
public class DataBindingInitializer implements WebBindingInitializer {
@Override
public void initBinder(WebDataBinder binder, WebRequest request) {
binder.setAutoGrowCollectionLimit(Integer.MAX_VALUE);
}
}
spring-bean.xml
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="xxx.DataBindingInitializer"/>
</property>
</bean>
- 大小: 83 KB
分享到:
相关推荐
- **异常路径**:`java.lang.Object -> java.lang.Throwable -> java.lang.Exception -> java.lang.RuntimeException -> java.lang.IndexOutOfBoundsException -> java.lang.ArrayIndexOutOfBoundsException` ...
项目中碰到的,记录一下解决方案
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder 继承并重写LinearLayoutManager.onLayoutChildren()方法 class WrappedLinearLayoutManager : ...
这个异常属于`java.lang.IndexOutOfBoundsException`类的子类,是Java运行时系统在检测到错误的数组索引时抛出的。 ### 数组的基本概念 数组在内存中占据连续的空间,每个元素通过索引来访问,索引通常是从0开始的...
Java中的“索引越界异常”(IndexOutOfBoundsException)是编程时常见的错误类型,尤其是在处理数组、集合或字符串等数据结构时。这个异常通常发生在尝试访问一个不存在的位置时,比如访问数组的一个负索引或者超出...
2. **`java.lang.IndexOutOfBoundsException`** - 访问数组时索引超出范围时抛出此异常。 3. **`java.lang.ArrayIndexOutOfBoundsException`** - 数组索引越界异常,当数组索引超出数组边界时发生。 4. **`java.lang...
文件片段还提到了一些Java的核心类库,如`java.lang.Object`、`java.lang.Throwable`、`java.lang.Exception`、`java.lang.RuntimeException`、`java.lang.Non_RuntimeException`等。这里提到了Java的基本类型层次...
java.lang.IndexOutOfBoundsException - **定义**: 访问数组或字符串的下标超出其有效范围时触发的异常。 - **常见场景**: - 使用变量作为下标时。 - 数组长度动态决定时。 - **解决方法**: - 在访问前检查数组...
JAVA面试题集 基础知识: 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。...所有的异常都是java.lang.Thowable 的子类。
16. **IndexOutOfBoundsException**: 当索引超出数组或列表范围时抛出的异常。 17. **InputConnection**: 输入连接接口,用于从远程服务器接收数据。 18. **InputStream**: 输入流接口,用于从源读取数据。 19. **...
`java.lang.IndexOutOfBoundsException` - **定义**:当试图访问数组或集合中的一个不存在的索引时,会抛出此类异常。 - **常见场景**: - 使用了超出数组长度的索引。 - 计算索引时出现逻辑错误。 - **示例**:...
java面试题集 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况...所有的异常都是java.lang.Thowable的子类。
JAVA相关基础知识广泛涵盖了面向对象编程的核心概念、Java语言的特有元素以及一些常用类库的使用与区别。以下是详细的解析: 面向对象编程的四大特征包括抽象、继承、封装和多态性。抽象是指通过忽略非关键细节而将...
- java.lang包包含Java语言的核心类,如Object、Throwable、String、Math等。 - java.util包提供了一系列的实用工具类,例如Scanner用于输入输出。 5. Java编程技巧: - 在循环中使用for-each结构,可以简化对数组...
虽然题目中提到的是`IndexOutOfBoundsExecption`,但实际上应该是指`IndexOutOfBoundsException`,但这不是Java标准库中的一个类。根据描述,这里应该是指`ArrayIndexOutOfBoundsException`。 ### 14. 创建一个大小...
当程序违反Java语义规则时,JVM会抛出异常,这些异常通常继承自`java.lang.Throwable`。例如,数组下标越界会抛出`IndexOutOfBoundsException`,访问null对象会抛出`NullPointerException`。程序员可以通过创建...
rectclerView出现java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 2(offset:2) 解决方案:原因就是在清除数据源的时候没有及时notify,需要及时更新list,否则就会报这个错误. ...
- 所有异常都是`java.lang.Throwable`类的子类。 - `Throwable`有两个重要的子类:`Error`和`Exception`。 - `Error`表示严重问题,通常不希望程序去捕获和处理这些异常。 - `Exception`表示可以通过程序逻辑...