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);
}
%>