기본 콘텐츠로 건너뛰기

Spring 로컬 마음데로 변경하기

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분석으로 코딩하면됩니다.).

댓글

이 블로그의 인기 게시물

Intellij에서 Eclipse 프로젝트 import시 설정해줘야 할 것들

요즘 여유가 좀 생겨서 지금까지 Eclipse만 쓰다가 사람들이 하도 Intellij가 좋다하길래 얼마나 좋길래 하고 써보려고 하다가 프로젝트를 import 시키던중 좀 적어두면 좋을거같아서 적어보려고한다 !! 다음에 잊지 않기 위해... 1. Settings > Build, Execution, Deployment > Compiler > Java Compiler 버전 맞추기 2. 상단에 설정 추가 하는부분을 눌러 톰켓을 생성해준다. 꼭 넣어줘야할 부분은 VM options에  -Dfile.encoding=utf-8  한글 깨짐 방지다. (그리고 intellij 설치 된 곳에 bin폴더 안에 vmoptions 확장자를 갖은 녀석의 맨 마지막 줄에도 넣어준다!) 3. project structure > Project Settings > Project 그리고 java버전에 맞춰서 project language level도 맞춰줘야합니다! 4. project structure > Project Settings > Modules - Sources 여기도 project language level도 맞춰줘야합니다! 5. project structure > Project Settings > Modules - Dependencies 들어가서 + 단추를 누르고 Library..를 누르고 Tomcat 추가! 이러면 이클립스에서 갖고온 프로젝트가 잘 동작합니다!! 아 그리고 .settings, .classpath, .project 는 필요 없어지므로 삭제해도 무방합니다 ps. 사실... 이클립스 쓰면서 불편한건 하나도 없었어요... 그리고 아직은 단축키라던지 익숙하지 않아서 이클립스가 더 편하네요... 사실 이클립스 단축키를 인텔리제이와 동일하게 할 수 있지만.... 인텔리제이의 기본 설정만 써...

Ext JS 4.2 트리 노드 추가 및 스크롤 이동

Ext.require([ '*' ]); Ext.onReady( function (){      var addButton = Ext.create( 'Ext.Button' , {         text: '노드 추가(Add Node)' ,         scale: 'large' ,         listeners: {         el: {             click: function () {          var thisNode =  Ext.getCmp( 'xAxisTreeUse' ).getRootNode().appendChild({                      "text":"노드 이름 (Node name) "         });                 Ext.getCmp( " tree " ).selectPath(thisNode.getPath());             }         }     });      var   store = Ext.create( 'Ext.data.TreeStore' , {             id:  'store' ,     ...