javax.servlet.jsp.JspTagException: No message found under code 'INFO-1004' for locale 'ko_KR'.

2018. 1. 23. 09:40etc/error


javax.servlet.jsp.JspTagException: No message found under code 'INFO-1004' for locale 'ko_KR'.

 

Spring 의 MessageSource 를 사용하던 중에 jsp 에서 접근해야 하는 경우가 생겼다.

 

그래서 jsp 파일에 spring 태그를 사용할 수 있도록 선언하고 사용했더니 에러가 발생했다.

 

ERROR

 

Caused by: javax.servlet.jsp.JspTagException: No message found under code 'INFO-1004' for locale 'ko_KR'.
 at org.springframework.web.servlet.tags.MessageTag.doEndTag(MessageTag.java:200)
 at org.apache.jsp.WEB_002dINF.view.sample.sampleCustomTaglibUtil_jsp._jspx_meth_spring_005fmessage_005f0(sampleCustomTaglibUtil_jsp.java:188)
 at org.apache.jsp.WEB_002dINF.view.sample.sampleCustomTaglibUtil_jsp._jspService(sampleCustomTaglibUtil_jsp.java:97)
 ... 96 more 

 

 



 

기존에 java에서 사용할 경우에는 문제가 없었는데 왜 갑자기 jsp 에서 사용하려니 오류가 나는지 황당했다.

 

그래서 차근차근 오류의 원인을 파악해 보았다.

 

원인은 해결되었고 해결하는 과정에서 알게된 몇가지 사항을 나열해 보았다.

 

요약하자면 위와 같은 오류가 발생했을 경우는 크게 3가지 정도로 좁혀지는것 같다.

 

먼저 설정파일에서 message properties 파일을 찾기 못할 경우와 message properties에 사용하려는 메시지가 없을 경우, 마지막으로 설정할 때 bean id를 임의로 설정한 경우다.

 

 

아래 소스와 함께 좀더 자세하게 오류사항을 점검해 보자.

 

XML 설정파일

1
2
3
4
5
6
7
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>classpath:/properties/properties-messages</value>
        </list>
    </property>
</bean>
cs

 

JSP 파일

1
2
3
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
 
<spring:message code="INFO-1004"></spring:message>
cs

 

 



 

1. MessgeSource 설정에서 property 를 정확하게 등록했는지 확인해야 한다.

위의 설정을 보면 property 의 basenames을 정확하게 설정했는지 살펴봐야 한다.

경로오타, 파일명 오타 등으로 인해 사용하려고 하는 Message Properties 가 정확히 연결되지 않았을 경우 발생할 수 있다.

 

2. 사용하려는 Message Properties 내부에 사용하려는 name(key)가 있는지 확인해야 한다.

예를 들면 INFO-1004 라는 name(key)를 가진 메시지를 사용하려면 INFO-1004 라는 name(key)를 가진 메시지가 Message Properties 내부에 있어야 한다.

 

3. MessgeSource 설정에서 bean id가 messageSource로 되어있는지 확인해야 한다.

JSP 에서 spring:message 태그를 사용하려면 설정처럼 bean id 가 messageSource로 되어있어야 사용가능하다.

 

 

위 3가지 정도를 체크한다면 해당 오류를 해결할 수 있을 것으로 생각한다.