java, jsp 다국어 초기화 소스

<%@ page language="java" contentType="text/html; charset=utf-8" %>

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

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

<fmt:setBundle basename="nls.ap_locale"/>

<%@ page import="java.io.BufferedInputStream,

java.io.*,

java.lang.reflect.Field,

java.lang.reflect.InvocationTargetException,

java.lang.reflect.Method,

java.util.Enumeration,

java.util.ResourceBundle, java.net.*" %>

<%


java.util.Enumeration<String> attrArr = request.getAttributeNames();

String keyObj; 

while(attrArr.hasMoreElements()){

keyObj =attrArr.nextElement();

%>

<%=keyObj%> || <%=request.getAttribute(keyObj) %> *** <br/>


<%

}

Class<java.util.ResourceBundle> type = java.util.ResourceBundle.class;

// 초기활할 파일명. 

String bundleName = "nls.ap_locale";

try {

java.lang.reflect.Field cacheList = type.getDeclaredField("cacheList");

    cacheList.setAccessible(true);

    

    Object obj = cacheList.get(java.util.ResourceBundle.class);

    

    java.util.Map resourceMap = ((java.util.Map<?, ?>) obj);


    java.util.Iterator iter = resourceMap.keySet().iterator();

    Object cacheObj = null, nameObj=null;

    

    java.util.List removeArr = new java.util.ArrayList();

    while(iter.hasNext()){

    cacheObj = iter.next();

    java.lang.reflect.Field field = cacheObj.getClass().getDeclaredField("name");

field.setAccessible(true);

nameObj = field.get(cacheObj);

nameObj= nameObj ==null?"":nameObj.toString();

if(bundleName.equals(nameObj)){

removeArr.add(cacheObj);

}

    }


    for(Object tmpObj: removeArr){

    resourceMap.remove(tmpObj);

    }

    //((Map<?, ?>) obj).clear(); // all cliear

}

catch (Exception e) {

   System.out.print("Failed to clear ResourceBundle cache" + e);

}

%>



+ Recent posts