본문 바로가기
IT 개발/SPRING

[SPRING] request parameter binding시 오류 - List Size 256

by Love of fate 2023. 10. 20.
728x90
반응형

 

Spring boot project 하는데 List로 Parameter를 넘겼는데 List.Size가 256을 초과한다는 에러가 났다. 

org.springframework.beans.InvalidPropertyException

Exception = org.springframework.beans.InvalidPropertyException: 
Invalid property 'lists[256]' of bean class [...................]: Index of out of bounds 
in property path 'lists[256]'; nested exception is java.lang.IndexOutOfBoundsException: 
Index: 256, Size: 256 at org.springframework.beans.BeanWrapperImpl.getPropertyValue
(BeanWrapperImpl.java:814) at org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper
(BeanWrapperImpl.java:555) at org.springframework.beans.BeanWrapperImpl.
getBeanWrapperForPropertyPath(BeanWrapperImpl.java:532) at org.springframework.beans.
BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:894) at org.springframework.beans.
AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:75) at 
org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:740) at 
org.springframework.validation.DataBinder.doBind(DataBinder.java:636) at 
org.springframework.web.bind.WebDataBinder.doBind(WebDataBinder.java:191)

[문제해결]

아래 스프링 docs를 보면 DataBinder클래스내 DEFAULT_AUTO_GROW_COLLECTION_LIMIT 상수가 존재하는데, 이는  256으로 초기화 되어있다.

 

http://docs.spring.io/autorepo/docs/spring-framework/3.1.x/javadoc-api/org/springframework/validation/DataBinder.html

 

이 상수는 일반적인 DataBinder를 통해서 자바빈 생성시 beanProperties초기화시 사용되어서 256개를 제한으로 두고있다.

 

JAVA Controller에 @InitBinder를 선언하여 List size bind 값을 재 셋팅했다.

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.setAutoGrowCollectionLimit(100000);
    }

 

분명 이거말고도 흠.... 다른 방법이 있을 거 같은데 이게 가장 일반적인것 같다.

다른 방법을 찾게되면 추가로 글을 작성하도록 하자.

728x90
반응형