티스토리 뷰
spring을 기동하거나 화면을 열때 아래와 같은 메세지를 심심치않게 만날 수 있다.
[11:04:03.874][ERROR][o.a.c.c.C.[.[localhost].[/].[jsp].log:line175] - Servlet.service() for servlet [jsp] threw exception
javax.servlet.jsp.JspTagException: No message found under code 'MSG.OING.SEARCH' for locale 'ko_KR'.
at org.springframework.web.servlet.tags.MessageTag.doEndTag(MessageTag.java:294)
jsp 화면을 열때 MSG.OING.SEARCH 라는 메세지를 찾을수 없어서 생기는 오류이다.
<label for="OING_NAME" class="txt-title">
<spring:message code='MSG.OING.SEARCH' />
</label>
MSG.OING.SEARCH 라는 메세지를 사용한곳은 위와 같은 곳이고 화면을 구성할 때 문제가 되었기에 오류가 났다.
이럴때는 선택을 해야 하는데
- 1. 메세지가 없을때 위와 같이 오류로 나타낼지
- 2. 메세지가 없는곳에는 그냥 메세지 코드로라도 출력을 해줄지
- 3. 메세지의 기본값을 입력을 해 놓을지 결정을 해야한다.
2번의 경우는 다음과 같이 해결할 수 있다.
@Bean
public ReloadableResourceBundleMessageSource messageSource() throws Exception{
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:/messages/message/common"
, "classpath:/messages/cmessage/common");
messageSource.setDefaultEncoding("UTF-8");
messageSource.setCacheSeconds(60);
messageSource.setUseCodeAsDefaultMessage(true);
return messageSource;
}
8라인을 보면 setUseCodeAsDefaultMessage 를 설정하는 부분이 있는데 이 부분을 true로 setting해주면 된다.
3번의 경우는 다음과 같이 해결할 수 있다.
- jsp 인 경우
<label for="OING_NAME" class="txt-title">
<spring:message code='MSG.OING.SEARCH' text="default message"/>
</label>
code 뒤에 text를 넣어서 해당 메세지에 대한 기본값을 설정해준다.
- java 인 경우
getMessage(String code, Object[] args, String defaultMessage, Locale locale)
java로 spring message를 부르는 부분에서는 위와 같이 getMessage를 해올때 defaultMessage를 설정할 수 있다.
끝!
'Framework > Spring' 카테고리의 다른 글
Springboot Kafka 설정 application.properties 목록 (0) | 2021.04.15 |
---|---|
Springboot application.properties (or .yml) 속성 종류 (0) | 2021.04.14 |
Spring + Maven Project Parent Child 구조로 만들기 (Multi-Module Project) (0) | 2021.04.01 |
Springboot Static Resource 공통화 하기 (0) | 2021.03.30 |
spring properties 파일 yaml 파일로 변경하기 (0) | 2021.03.23 |
댓글