Config 파일에서 MessageSource를 스프링의 Bean으로 등록한다.
@Configuration
public class MessageConfig {
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
// base Message
messageSource.setBasename("classpath:/messages");
// 언어 설정
messageSource.setDefaultEncoding("UTF-8");
// 메세지 소스 캐시하는 최대 시간
messageSource.setCacheSeconds(1);
// 찾는 값이 없을 때 기본 메세지로 대체 여부
// messageSource.setUseCodeAsDefaultMessage(true);
return messageSource;
}
}
messageSource.setBasename에 지정한 경로에 properties 파일을 만든다.
# 처리 결과 result
result.save.success=저장되었습니다.
result.regist.success=등록되었습니다.
result.modify.success=수정되었습니다.
result.delete.success=삭제되었습니다.
result.custom.success={0} 완료되었습니다.
result.fail=처리에 실패했습니다.
# 유효성 검사 valid
valid.pattern={0} 형식을 확인해주세요.
valid.select={0} 선택해주세요.
valid.input={0} 입력해주세요.
valid.date.compare=시작 날짜가 종료 날짜보다 클 수 없습니다.
valid.date.term=날짜의 범위는 {0}개월을 초과할 수 없습니다.
valid.file.amount={0}개 까지만 등록 가능합니다.
valid.file.format={0} 파일만 등록 가능합니다.
valid.element.amount=최대 {0}{1}까지 가능합니다.
valid.product.amount=재고가 부족합니다. 최대 {0}개까지 구매 가능합니다.
valid.terms.consent=이용약관 동의를 체크해주세요.
valid.coupon.use=이미 적용된 쿠폰입니다.
# 질문 confirm
confirm.custom={0} 하시겠습니까?
confirm.save=저장 하시겠습니까?
confirm.modify=수정 하시겠습니까?
confirm.regist=등록 하시겠습니까?
confirm.delete=삭제 하시겠습니까?
Java에서 사용시
@Autowired
MessageSource messageSource;
messageSource.getMessage("result.fail", new String[], null);
getMessage는 첫 번째 인자로 코드를, 두 번째 인자로 인자를 문자열 배열로 전달, 마지막은 locale이다 (ko, en 같은)
JSP에서 사용시 (taglib 필수)
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
...
<script>
alert('<spring:message code="valid.file.format"/>');
</script>
...
alert 말고 body에서도 사용 가능! 방법은 동일하다.
만약 인자를 넘겨줘야 하면 arguments="" 속성에 넣으며, 여러개일 경우 쉼표로 구분한다.
이렇게 Bean을 등록해서 사용했으나
@Autowired로 주입한 후 getMessage를 사용하는 방법보다 유틸 클래스에서 getMessage를 재정의하여 사용하는 게 더 편리해서 결국 유틸 클래스를 이용하는 방법으로 바꾸었다.
getMessage의 인자를 하나만, 두개, 세개를 넣을 수 있도록 각각 오버로딩해서 사용하면 MessageUtil.getMessage("result.fail"); 형태로 사용이 가능해 더 간편한 것 같다 ◡̈
'개발공부 > Spring' 카테고리의 다른 글
[Spring] my-batis를 이용해 Json 배열 데이터를 특정 객체에 매핑 (0) | 2023.09.28 |
---|
댓글