작성
·
287
0
안녕하세요.
스프링 MVC2에서 타임리프 수업 중에 체크박스 관련해서 궁금증이 생겨 질문드립니다.
체크박스를 기본으로 체크하면 on이 전달되어 true, 체크하지 않으면 아무 값이 넘어가지 않아
문제가 생길 수 있으니 _open 또는 타임리프가 제공해 주는 th:field를 사용해서 문제 해결
이렇게 설명을 해주셨는데, 제가 생각하기로는 자바에서 생성자에 기본적으로 Boolean open 필드의 default 값을 false로 해놓으면 문제가 없는 거 아닌가 생각이 드는데, 굳이 _open 또는 th:field를 사용하는 게 장점이 있거나, 제가 미처 파악하지 못한 부분이 있는지 궁금합니다.
답변 1
0
체크박스에서 사용자가 선택을 하지 않은 경우, HTTP 요청에서 해당 파라미터가 전달되지 않습니다. 이 경우, Spring MVC는 해당 파라미터의 값을 null로 설정합니다. 따라서, 컨트롤러에서 해당 파라미터를 Boolean 타입으로 받을 경우, null 값을 처리해야 합니다. 이러한 null 처리를 방지하기 위해, 기본 값을 false로 설정하는 것은 하나의 방법입니다.
하지만, Thymeleaf에서는 th:field 또는 th:checked 속성을 사용하면, 체크박스가 선택되지 않은 경우에도 파라미터가 전달되도록 설정할 수 있습니다. 이를 통해, 컨트롤러에서 null 처리를 하지 않고도 원하는 값으로 초기화할 수 있습니다. 또한, th:field 또는 th:checked 속성을 사용하면, 체크박스의 값이 Boolean이 아닌 다른 타입으로 변환되는 경우에도 자동으로 처리할 수 있습니다. 따라서, Thymeleaf에서는 th:field 또는 th:checked 속성을 사용하는 것이 좀 더 편리하고 안정적인 방법입니다.