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

작성자 없음

작성자 정보가 삭제된 글입니다.

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

체크 박스 - 단일1

왜 히든필드가 있나요?

작성

·

259

0

스프링쪽에서 체크박스가 선택이 안됐을 때 NULL이 오는 것이 불편한 것을 알기에 히든필드라는 기능을 제공하는거라면
 
그냥 체크박스가 선택이 안돼있을 때 NULL이 아니라 False를 리턴하게 만들면 되지 않나요 ?
 
어째서 선택을 하지 않았을 때 False가 아닌 null을 리턴하는건가요 ?

답변 1

2

안녕하세요, hjemsti 님. 공식 서포터즈 codesweaver 입니다.
.
체크박스가 체크되지 않았을때의 기본동작은 HTTP가 결정합니다.

regions 라는 체크박스가 있다고 하고, 사용자가 이 체크박스를 체크하지 않았다고 할때, 개발자가 바라는 방식은 {regions : null} 의 형태로 값이 넘어오는것입니다. 값 자체는 null이든 false이든 사실 중요하지는 않습니다.

문제는, HTTP의 기본 동작은, regions 자체가 아예 넘어오지 않고 {} 빈 값이 넘어오는것이 기본 동작이라는 점입니다. 그래서 regions가 널인지 체크하는 구문자체도 오류가 발생할 수 있습니다. 

if (regions == null) {

    ... some code...

}

// error!! regions가 존재하지 않습니다. 

그래서 과거에는 regions의 값이 유효한지에 앞서 regions 자체가 존재하는지도 체크해야 하는, 번거로운 작업을 해야 했습니다 :) 이에 타임리프는 사용자가 체크박스를 체크하든 하지 않든 언제나 regions라는 필드를 전달받기 위해 hidden 필드를 몰래 추가하는 것입니다.
.
감사합니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기