728x90
반응형

오류 메세지 : 

Invalid property 'metaDatas[256]' of bean class[com.comas.solme.ecm.admin.cm.action.ContentsModel]: Index of out of bounds in property path 'metaDatas[256]'; nested exception is java.lang.IndexOutOfBoundsException: Index: 256, Size: 256
DefaultController.java
@Controller
public class DefaultController {
    public static class Command {
        private List<MetaValueModel> metaDatas = new ArrayList<MetaValueModel>();
        // ...
    }
 
    public void edit(@ModelAttribute Commmand commmand) {
        // ...
    }
 
 
}

 

위와 같은 오류는 스프링 MVC 에서 폼 Path 에 해당하는 속성의 컬렉션 크기를 256으로 설정되어 있기 때문에 발생한다. 엄밀히 말하면 오류라기보다는 설정상의 문제.

다음과 같이 컬렉션의 제한 크기를 늘려주면 된다.  주의할 점은 반드시WebDataBinder 설정시 가장 먼저 setAutoGrowNestedPaths 값을 true 로 바꿔주고 초기화를 진행해야한다는 것이다. 안 그럼 "DataBinder is already initialized - call setAutoGrowNestedPaths before other configuration methods" 이런 오류를 만날 것이다.

  • binder.setAutoGrowNestedPaths(true);
  • binder.setAutoGrowCollectionLimit(5000);

 

DefaultController.java
@Controller
public class DefaultController {
    @InitBinder
    protected void initBinder(WebDataBinder binder) {
        binder.setAutoGrowNestedPaths(true); // insert this line
        binder.setAutoGrowCollectionLimit(5000); // insert thist line
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        binder.registerCustomEditor(Date.classnew CustomDateEditor(dateFormat, true));
        binder.registerCustomEditor(String.classnew StringTrimmerEditor(true));
    }
}
728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,