◆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"/><!--히든 필드 추가-->