Back-End/Spring

유효성검사 메시지관리

EverJunior Minjoo 2022. 10. 7. 11:56

일반적 메시지 관리

어플리케이션에서 표시하는 메시지는 프로그램과 별도로 관리한다. 메시지를 템플릿에서 분리해서 메시지만 프로퍼티파일로 관리하는것이 유지보수가 좀더 편해서 그렇다.

스프링부트를 이용한 개발에서 유효성검사에 대응되는 메시지는 ValidationMessages.properties로 그 외 메시지는 messages.properties에 작성한다.

 

1. Messages. properties 생성

# entry 화면용
title.entry=입력화면
button.send=계산
#CalcForm용
calcForm.leftNum=왼쪽
calfForm.rightNum=오른쪽

프로퍼티파일은 key=value로 구성된다. CalcForm용 항목은 필드명이나 객체.필드명으로 작성할수있다.

객체명은 소문자로된 카멜표기로 표현한다. CalcForm클래스의 필드명을 항목으로 하고싶을땐, calcForm(카멜표기객체).필드명 형태로 작성된다.

 

2. 입력화면 뷰생성

(이전에 유효성검사용 만든 프로젝트 수정해서쓴다)

#{키} 형태로 messages.properties의 값을 가져온다. submit할때도 메시지를 이용하기 위해 input태그 말고 button으로 사용해서 메시지를 이용한다.

그리고 타임리프 식중에 메시지 식이 # { }  이거이다.

 

-ValidationMessage.properties 생성

유효성 검사에 대응하는 메시지ValidationMessage.properties를 생성한다. 위치는 리소스 밑

#단일항목 검사용 메시지
javax.validation.constraints.NotNull.message={0}: 숫자를 입력해 주세요.
org.hibernate.validator.constraints.Range.message={0}: {min}~{max} 범위의 숫자를 입력해 주세요.
#형변환 체크용 메시지
typeMismatch.java.lang.Integer={0}은 정수를 입력해주세요

단일항목 검사 어노테이션과 메시지에 대응하기 위해서는 어노테이션의 FQCN.message가 메시지 취득하기 위한 '키'가 된다.

여기서FQCN(Fully Qualified ClassName)이란 클래스가 속한 패키지명을 모두 포함한 이름 이라는 의미이다.

메시지 중에 {수치} 는 자리표시자로 0부터 시작하는 수치에는 화면상의 항목이름이 설정된다. 

{min} 등의 영어에는 어노테이션의 속성에 지정된 값이 설정된다.

형변환 검사의 메시지는 'type.Mismatch.클래스의 FQCN'의 키로 설정한다.

 

- Form 클래스

기존에 있던것에서 검사어노테이션의 message항목만 제거한다.

 

 

출처 : 스프링프레임워크 첫걸음 -위키북스-