다른 분들은 index 오류가 뜨던데 나는 오류 로그도 따로 안뜨는데 저장이 안되길래 몇시간동안 확인해보니 이 오류였다.
저장 시 하위 상품을 같이 저장하는데, 하위 상품이 희한하게 256개만 초과되면 아무 반응이 없고 저장이 안됐다. 뭔가 익숙한 숫자.. 256..
구글링 결과,
1. 톰캣 설정에서 maxParameterCount 값을 -1(무제한)로 설정하거나
2. @initBinder 어노테이션을 Controller 안에 설정해주면 된다
1. maxParameterCount 값 수정
server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
maxParameterCount="-1"/> <!-- maxParameterCount 수정 -->
maxParameterCount 값을 따로 설정한 적은 없었는데,
출처 에 따르면 maxParameterCount 값은 defualt가 10000개이며, post로 전송 시 2MB가 전송크기 제한이라고 되어 있다고 하는데
https://youngram2.tistory.com/110
내가 보내려는 데이터는 300개 이하였으며, 크기도 13KB 정도로 2MB에 택도 없었지만 오류가 발생했다.
그래서 위의 값을 수정하지는 않았고 아래의 2번 방법을 선택했다.
2. @initBinder 어노테이션 추가
늘려야 할 List를 사용하는 소스파일 상단에 @initBinder 어노테이션을 작성해준다.
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setAutoGrowNestedPaths(true);
binder.setAutoGrowCollectionLimit(1024);
}
①.setAutoGrowNestedPaths(true)
→ 이 함수 호출을 통해 초기화한다.
초기화해주지 않으면 "DataBinder is already initialized - call setAutoGrowNestedPaths before other configuration methods" 이 오류를 만난다고 한다.
그런데 spring 기본문서를 보면 defualt 값이 true이기때문에, 위 오류가 발생하면 이 함수의 값을 true로 세팅해주도록 하면 될 것 같다.
②.setAutoGrowCollectionLimit(1024);
→ 이 함수 호출을 통해 Limit 갯수를 늘려준다. 1024 대신 본인이 필요한 만큼 숫자 작성
참고자료
https://javafactory.tistory.com/1323
https://pshcode.tistory.com/30
'웹개발지식쌓기' 카테고리의 다른 글
[IntelliJ] IntelliJ + SVN + tomcat 연동 (0) | 2024.09.24 |
---|---|
[front] beforeunload 작동 안함 / visibilitychange 이벤트 (0) | 2024.08.22 |
[IntelliJ] 폐쇄망에서 인텔리제이 라이센스 등록하기 (0) | 2024.02.08 |
[front] 브라우저 탭 아이콘 적용하기 (favicon) (0) | 2024.02.02 |
[back] 자바의 직렬화 (Serialzation : implements Serializable) (0) | 2024.02.01 |