note

LocaleResolver를 이용한 Locale 변경(국제화) 본문

JSP/Spring

LocaleResolver를 이용한 Locale 변경(국제화)

투한 2012. 3. 7. 10:13











한글 Locale 적용 주소로 들어간뒤

login.do 호출





영문 Locale 적용 주소로 들어간뒤 



login.do 호출












dispatcherInternal-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<!-- 커스텀 태그 이용 -->
 	<bean class="madvirus.spring.chap07.controller.LoginController">
 		<property name="authenticator">
 			<bean class="madvirus.spring.chap07.controller.MockAuthenticator"/>
 		</property>
 	</bean>
 	
 	<!-- 국제화 -->
 	<bean class="madvirus.spring.chap07.controller.LocaleChangeController">
 		<property name="localeResolver" ref="localeResolver" />
 	</bean>
 	
 	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
	
	<!-- View 글로벌 설정 -->
	<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/viewjsp/" />
		<property name="suffix" value=".jsp"/>
	</bean>
	
	<!-- 리소스 번들 지정 -->
	<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
		<property name="basenames">
			<list>
				<value>messages.validation</value>
				<value>messages.label</value>
			</list>
		</property>
	</bean>
</beans>







LocaleChangeController
package madvirus.spring.chap07.controller;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.LocaleResolver;

@Controller
public class LocaleChangeController {

	private LocaleResolver localeResolver;

	@RequestMapping("/changeLanguage")
	public String change(@RequestParam("lang") String language,
			HttpServletRequest request, HttpServletResponse response) {
     
		Locale locale = new Locale(language);
		localeResolver.setLocale(request, response, locale);
		return "redirect:/index.jsp";
	}

	public void setLocaleResolver(LocaleResolver localeResolver) {
		this.localeResolver = localeResolver;
	}
}



String language
에 Locale 정보가 담겨 있다