◆SPRING/정리
[Spring+html] 체크박스 체크&미체크(타임리프 사용 전)
쿠키린
2023. 2. 1. 00:29
<div class="form-check">
<input type="checkbox" id="open" name="open" value="${item.open}" class="form-check-input">
<input type="hidden" name="_open" value="on"/><!--히든 필드 추가, 귀찮..-->
<label for="open" class="form-check-label">판매 오픈</label>
</div>
#체크박스 체크
open=on&_open=on
체크 박스를 체크하면 스프링 MVC가 open에 값이 있는지 확인하며 이때 _open은 무시한다.
#체크박스 미체크
_open=on
체크 박스를 체크하지 않으면
스프링 MVC가 _open만 있는 것을 확인하고 open의 값이 체크되지 않았다고 인식한다.
이 경우 서버에서 Boolean 타입을 찍어보면 결과가 'null'이 아닌 'false'인 것을 확인할 수 있다.
결과 보기 => log.info("item.open={}", item.getOpen());
@PostMapping("/add")
public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes) {
//itemName=%E3%85%8E%E3%85%87&price=1111&quantity=1111&open=true&_open=on
//_open <-- 단일 체크박스 단점 보안
log.info("item.open={}", item.getOpen()); //item.open=true
log.info("item.name={}", item.getItemName()); // item.name=ㅎㅇ
Item savedItem = itemRepository.save(item);
redirectAttributes.addAttribute("itemId", savedItem.getId());//
redirectAttributes.addAttribute("status", true);
return "redirect:/form/items/{itemId}";
}
타임리프를 사용하면 🔽귀찮게 추가 안해도 된다.. 다음 이시간에..
<input type="hidden" name="_open" value="on"/><!--히든 필드 추가-->