티스토리 뷰

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를 설정할 수 있다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31