`
Luob.
  • 浏览: 1591880 次
  • 来自: 上海
社区版块
存档分类
最新评论

java.lang.IndexOutOfBoundsException: Index: 256, Size: 256

 
阅读更多
出现的场景是: 前端 提交一个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中异常分析

    - **异常路径**:`java.lang.Object -&gt; java.lang.Throwable -&gt; java.lang.Exception -&gt; java.lang.RuntimeException -&gt; java.lang.IndexOutOfBoundsException -&gt; java.lang.ArrayIndexOutOfBoundsException` ...

    java.lang.IndexOutOfBoundsException(解决方案).md

    项目中碰到的,记录一下解决方案

    RecyclerView索引溢出异常的解决方法

    java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder 继承并重写LinearLayoutManager.onLayoutChildren()方法 class WrappedLinearLayoutManager : ...

    java 数组下标越界异常(ArrayIndexOutOfBoundsException)

    这个异常属于`java.lang.IndexOutOfBoundsException`类的子类,是Java运行时系统在检测到错误的数组索引时抛出的。 ### 数组的基本概念 数组在内存中占据连续的空间,每个元素通过索引来访问,索引通常是从0开始的...

    java 索引越界异常(IndexOutOfBoundsException)

    Java中的“索引越界异常”(IndexOutOfBoundsException)是编程时常见的错误类型,尤其是在处理数组、集合或字符串等数据结构时。这个异常通常发生在尝试访问一个不存在的位置时,比如访问数组的一个负索引或者超出...

    java异常类型.txt

    2. **`java.lang.IndexOutOfBoundsException`** - 访问数组时索引超出范围时抛出此异常。 3. **`java.lang.ArrayIndexOutOfBoundsException`** - 数组索引越界异常,当数组索引超出数组边界时发生。 4. **`java.lang...

    JAVA讲义第6章.pdf

    文件片段还提到了一些Java的核心类库,如`java.lang.Object`、`java.lang.Throwable`、`java.lang.Exception`、`java.lang.RuntimeException`、`java.lang.Non_RuntimeException`等。这里提到了Java的基本类型层次...

    Java常见异常和错误总结

    java.lang.IndexOutOfBoundsException - **定义**: 访问数组或字符串的下标超出其有效范围时触发的异常。 - **常见场景**: - 使用变量作为下标时。 - 数组长度动态决定时。 - **解决方法**: - 在访问前检查数组...

    Java面试题集.rar

    JAVA面试题集 基础知识: 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。...所有的异常都是java.lang.Thowable 的子类。

    j2me api中文版

    16. **IndexOutOfBoundsException**: 当索引超出数组或列表范围时抛出的异常。 17. **InputConnection**: 输入连接接口,用于从远程服务器接收数据。 18. **InputStream**: 输入流接口,用于从源读取数据。 19. **...

    java常见异常总结

    `java.lang.IndexOutOfBoundsException` - **定义**:当试图访问数组或集合中的一个不存在的索引时,会抛出此类异常。 - **常见场景**: - 使用了超出数组长度的索引。 - 计算索引时出现逻辑错误。 - **示例**:...

    Java面试题笔试题大全

    java面试题集 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况...所有的异常都是java.lang.Thowable的子类。

    JAVA相关基础知识

    JAVA相关基础知识广泛涵盖了面向对象编程的核心概念、Java语言的特有元素以及一些常用类库的使用与区别。以下是详细的解析: 面向对象编程的四大特征包括抽象、继承、封装和多态性。抽象是指通过忽略非关键细节而将...

    编程语言Java试卷.pdf

    - java.lang包包含Java语言的核心类,如Object、Throwable、String、Math等。 - java.util包提供了一系列的实用工具类,例如Scanner用于输入输出。 5. Java编程技巧: - 在循环中使用for-each结构,可以简化对数组...

    Java常见异常收纳整合

    虽然题目中提到的是`IndexOutOfBoundsExecption`,但实际上应该是指`IndexOutOfBoundsException`,但这不是Java标准库中的一个类。根据描述,这里应该是指`ArrayIndexOutOfBoundsException`。 ### 14. 创建一个大小...

    JAVA面试题集.doc

    当程序违反Java语义规则时,JVM会抛出异常,这些异常通常继承自`java.lang.Throwable`。例如,数组下标越界会抛出`IndexOutOfBoundsException`,访问null对象会抛出`NullPointerException`。程序员可以通过创建...

    阿里云javasdk源码-WorkIssue:主要是针对工作中遇到的一些问题,记录下来便于记忆

    rectclerView出现java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 2(offset:2) 解决方案:原因就是在清除数据源的时候没有及时notify,需要及时更新list,否则就会报这个错误. ...

    java面试题目汇总

    - 所有异常都是`java.lang.Throwable`类的子类。 - `Throwable`有两个重要的子类:`Error`和`Exception`。 - `Error`表示严重问题,通常不希望程序去捕获和处理这些异常。 - `Exception`表示可以通过程序逻辑...

Global site tag (gtag.js) - Google Analytics