Interceptor.java
public class Interceptors extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//메소드는 컨트롤러가 호출되기 전에 실행된다.
Locale locale = extractLocale(request,"ko");
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
localeResolver.setLocale(request, response, locale);
return true;
}
private Locale extractLocale(HttpServletRequest request,String local) {
if(StringUtils.hasText(local)) {
return StringUtils.parseLocaleString(local);
}
return request.getLocale();
}
}
web-interceptor.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<mvc:annotation-driven/>
<mvc:interceptors>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="locale"></property>
</bean>
</mvc:interceptors>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" >
<property name="defaultLocale" value="ko"/>
</bean>
</beans>
필자가 코딩 하다가 다국어 지원을 해야할 경우가 생겼다.
그래서 공통으로 쓰는 언어 예를들어 한국어로는 [조회]인데 영어로는 [Search] 이런것을 스프링에선 LocaleChangeInterceptor
로 지원을 한다 근데 기본적으로 파라미터로 보내야 볼 수 있는데 나는 그것을 원하지 않았다./en/*은 영문 /kr/*또는 없을 경우에는
국문으로 바꿔야했다. 그래서 인터셉터에서 처리해줬다.(restful을쓰거나 각자 url분석으로 코딩하면됩니다.).
댓글
댓글 쓰기