• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

왜 히든필드가 있나요?

21.09.12 20:04 작성 조회수 198

0

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

답변 1

답변을 작성해보세요.

2

codesweaver님의 프로필

codesweaver

2021.09.12

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

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

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

if (regions == null) {

    ... some code...

}

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

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