인프런 커뮤니티 질문&답변

tseqnu U님의 프로필 이미지
tseqnu U

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

요구사항 추가

단일 체크박스 - 체크해제 설정

작성

·

360

·

수정됨

0

강의 내용 중 단일 체크박스를 체크하면 원하는 상태로 변하는데, 체크를 풀면 500에러가 발생합니다. 어떻게 코드를 수정해야 할 지 도움을 요청드립니다.

강의 내용을 조금 변형해서 - '할일'을 등록할 때 할일 완료상태면 TODO_COMPLETE, 미완료이면 TODO_INCOMPLETE이 되도록 아래와 같이 작성하였습니다. (Todo.java)

1) 등록된 할일을 수정할 때 단일 체크박스를 체크하면 완료, 체크를 풀면 미완료가 되도록 아래와 같이 editTodo.html을 작성했습니다.

이 경우, 할일 수정 페이지에서 체크를 할 때는 TODO_COMPLETE으로 상태가 잘 변경됩니다. 그런데 다시 체크를 풀면 500에러가 발생하는데요. (org.thymeleaf.exceptions.TemplateInputException 입니다) 그래서 Controller에서 할일 수정하는 핸들러의 구현부에 디버거를 걸고 확인을 했더니

빨간 네모에서 처럼 체크를 풀고 저장버튼을 누르면 TODO_INCOMPLETE로 변경되는 것이 아니라 null로 넘어가고 있습니다.

2) 그래서 강의 복습 및 구글링으로 아래와 같이 체크박스 부분을 수정했는데요.

그랬더니 todoCmplt 상태는 무조건 TODO_INCOMPLETE로 고정되어 체크박스에 체크를 하고 할일 수정(저장)을 해도 체크는 풀리게 되었습니다. (editTodo.html의 체크박스를 여러 번 다르게 수정했지만 모두 실패했습니다.)

Todo.java에서 코드가 잘못된 것인지, editTodo.html이 잘못된 것인지 알 수 없어 문의드립니다.

답변 2

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. tseqnu U님

제 생각에 이 부분은 단일 체크박스로는 구현하기 어려울 듯 합니다.

체크 박스 - 멀티 부분을 참고하시고, 항목을 하나만 사용하는 방법을 사용하시면 될 것 같습니다.

감사합니다.

tseqnu U님의 프로필 이미지
tseqnu U
질문자

답변 감사합니다. 영한님 강의 들으면서 가장 많이 구글링 해봤던 부분인데~ 체크박스 멀티로 다시 시도해보겠습니다.

0

value = "TODO_COMPLETE" 에서 문제가 발생하는거 같습니다.
제 설명이 정확히 맞는지는 모르겠지만,

아마 문제가 노트에서 존재하는 체크 박스 -1 의 설명처럼
```
HTML에서 체크 박스를 선택하지 않고 폼을 전송하면 open 이라는 필드 자체가 서버로 전송되지 않는다.
```
아마 체크박스를 헤제를 했을때 저 HTML value 필드 자체가 전송이 안된거 같습니다

th:value 비슷하게 한번 바꿔보시는걸.. 추천드립니다

tseqnu U님의 프로필 이미지
tseqnu U

작성한 질문수

질문하기