728x90

- 국제화 텍스트 properties 파일을 resources에 생성한다. 

 

 

messages.properties 파일

 

++ResourceBundle Editor

http://essiembre.github.io/eclipse-rbe/

 

messages_en.properties 파일 

jsp파일을 parsing 하다 fmt 태그에서 key값을 발견하면 value값을 꺼내 반환해준다.

 

- ApplicationConfig에 MessageSource Bean을 설정한다.

@Bean("messageSource")

public MessageSource messageSource() {

ResourceBundleMessageSource resourceBundleMessageSource=

new ResourceBundleMessageSource();

resourceBundleMessageSource.setBasenames("messages/messages","messages/user");

return resourceBundleMessageSource;

}

messageSource()메소드는 

resourceBundleMessageSource를 생성하고 Basenames에 messages(route)/messages(.properties 기술하지 않음) 을 setting 해준다. 위 코드에서는 messages 뿐만 아니라 user도 ','로 구분하여 함께 등록했다.

그 후 resourceBundleMessageSource를 반환해준다.

 

 

 

 

JSTL 태그

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<%

request.setAttribute("id", "아이디");

request.setAttribute("pass", "비밀번호");

request.setAttribute("name", "이");

%>

<%-- 1.Locale객체설정(JSTL)--%>

<fmt:setLocale value="${pageContext.request.locale.language}"/>

<%-- 2.ResourceBundle 의 properties파일지정(JSTL) 페이지전역 --%>

<fmt:setBundle basename="messages/messages"/>

 

<fmt:message key="password.mismatch.exception">

<fmt:param value="${id}"/>

<fmt:param value="${pass}"/>

<fmt:param value="${name}"/>

</fmt:message>

JSTL 태그는 JSP에서 사용하는 국제화 태그이다. 

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

taglib directive로 태그 라이브러리를 import 해주면 prefix로 태그를 사용할 수 있다.

<%-- 1.Locale객체설정(JSTL)--%>

<fmt:setLocale value="${pageContext.request.locale.language}"/>

locale(지역)을 fmt:setLocale 태그로 설정해준다.

<%-- 2.ResourceBundle 의 properties파일지정(JSTL) 페이지전역 --%>

<fmt:setBundle basename="messages/messages"/>

resourceBundle의 basename을 지정해준다.

password.mismatch.exception = {0} {1} {2} 사용자의 비밀번호가 일치하지 않습니다.

messages.properties에 password.mismatch.exception은 

파라메터 3개를 받아서 텍스트를 뿌린다.

 

<fmt:message key="password.mismatch.exception">

<fmt:param value="${id}"/>

<fmt:param value="${pass}"/>

<fmt:param value="${name}"/>

</fmt:message>

파라메터가 필요없다면 

<fmt:param>태그는 필요없다.

 

 

 

 

다음은 Spring에서 제공하는 국제화 태그이다.

<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>

 

<s:message

code="exception.userexisted"

arguments="${id}" />

s:message 태그에

code="KEY"

파라메타를 받는다면 

arguments="param"

<s:message code="nv.bc"

arguments="user,list"

argumentSeparator=","/>

파라메타가 여러개면

arguments에 파라메타를 구분자와 함께 기술하고

argumentSeparator에 구분자를 지정해준다.

Spring Container에 등록된 MessageSource 빈객체를 @를 이용해서 JSP에서직접호출

<s:eval expression="@messageSource.getMessage('nv.bc',new Object[]{'유저','리스트'},new java.util.Locale('en','US'))"/>

messageSource.getMessage('key',['param','param'],locale('language','locale'))

'Java > Spring Boot' 카테고리의 다른 글

Java WebAppInitConfig  (0) 2023.09.13
Spring Boot Request Controller  (0) 2023.09.13
Spring Boot Controller Mapping + View Resolver  (0) 2023.09.12
Spring Boot Exception Handler  (0) 2023.09.12
Spring Boot  (0) 2023.09.12

+ Recent posts