스프링 통합으로 추가되는 기능들
스프링의 SpringEL 문법 통합
${myBean.doSomething()}처럼 스프링 빈 호출 지원
편리한 폼 관리를 위한 추가 속성
>> th:object, th:field, th:errors, th:errorclass
폼 컴포넌트 기능
>> checkbox, radio button, List
스프링의 메시지, 국제화 기능의 편리한 통합
스프링의 검증, 오류 처리 통합
스프링의 변환 서비스 통합(ConversionService)
입력 폼 처리
th:object : 커맨드 객체를 지정
*{...} : 선택 변수 식, th:object에서 선택한 객체에 접근
th:field : HTML 태그의 id, name, value 속성을 자동 처리
th:object="${item}"
>> <form>에서 사용할 객체를 지정
th:field="*{itemName}"
>> *{itemName)은 선택 변수 식으로 ${item.itemName}과 같음
>> id, name, value 속성 자동 생성
요구사항 추가
판매 여부
>> 판매 오픈 여부
>> 체크 박스로 선택 가능
등록 지역
>> 서울, 부산, 제주
>> 체크 박스 다중 선택 가능
상품 종류
>> 도서, 식품, 기타
>> 라디오 버튼으로 하나만 선택 가능
배송 방식
>> 빠른 배송, 일반 배송, 느린 배송
>> 셀렉트 박스로 하나만 선택 가능
단일 체크 박스
체크 박스를 체크하면 HTML Form에서 open=on이라는 값이 넘어감
>> 스프링은 on이라는 문자를 true 타입으로 변환
체크 박스를 선택하지 않으면
>> open 이라는 필드 자체가 서버로 전송되지 않음
>> 수정의 경우에는 상황에 따라 문제가 될 수 있음
체크 해제를 인식하기 위한 히든 필드
<input type="hidden" name="_open" value="on"/>
히든 필드를 하나 만들어서 _open 처럼 기존 체크 박스 이름 앞에 언더스코어(_)를 붙여서 전송
>> 체크 해제했다고 인식 가능
>> 히든 필드는 항상 전송됨
>> 체크를 해제한 경우 open은 전송되지 않고 _open만 전송
>> 스프링 MVC는 체크 해제라고 판단
타임리프로 히든 필드 자동 처리
th:field 사용
>> HTML 생성 결과를 보면 히든 필드 부분이 자동 생성
타임리프의 체크 확인
checked="checked'
>> 체크 박스를 선택해서 저장하면 조회시 checked 속성이 추가됨
>> 타임리프의 th:field를 사용하면 값이 true인 경우 체크를 자동 처리
disabled
>> 체크 박스 선택되지 않게 함
멀티 체크 박스
@ModelAttribute의 특별 사용법
model.addAttribute(...)를 사용해서 데이터를 반복해서 넣어줘야 할 때
>> 컨트롤러에 있는 별도의 메서드에 적용 가능
>> 해당 컨트롤러 요청할 때 regions에서 반환한 값이 자동으로 model에 담김
th:for="${#ids.prev('regions')}"
반복해서 HTML 태그를 생성할 때 생성된 HTML 태그 속성에서 name은 같아도 되지만
>> id는 모두 달라야 함
>> 따라서 타임리프는 체크박스를 each 루프 안에서 반복할 때 임의로 1, 2, 3 숫자 붙여줌
라디오 버튼
여러 선택지중 하나를 선택할 때
ItemType.values() 사용
>> 해당 ENUM의 모든 정보를 배열로 반환
셀렉트 박스
여러 선택지 중 하나를 선택할 때
출처 : 김영한, 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
'Spring' 카테고리의 다른 글
MVC / Validation (0) | 2025.04.10 |
---|---|
MVC / 메시지, 국제화 (0) | 2025.04.09 |
MVC / Thymeleaf - 기본 기능 (0) | 2025.04.07 |
MVC / 웹 페이지 만들기 (0) | 2025.04.06 |
MVC / 기본 기능 (0) | 2025.04.04 |