我使用JSP / Servlet Application。 我想覆盖ResourceBundle,因为我在外部路径中有属性(不在war内)。 我无法访问JSP中的ResourceBundle。
我的ResouceBundle名称是ApplicationResources.properties。我也有其他语言环境的属性。 在JSP中,fmt标记如下所示
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:setBundle basename="ApplicationResources" />
在Web.xml中,以下配置用于JSTL
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>ApplicationResource</param-value>
</context-param>
应用程序启动时不执行以下MyResourceBundle。是否需要在web.xml中添加任何配置?
public class MyResourceBundle extends ResourceBundle {
public MyResourceBundle(){
File file = new File("C:\\Prop");
ClassLoader loader=null;
try {
URL[] urls = {file.toURI().toURL()};
loader = new URLClassLoader(urls);
ResourceBundle bundle = ResourceBundle.getBundle("ApplicationResources", Locale.getDefault(), loader);
setParent(bundle);
} catch (MalformedURLException ex) {
System.out.println("RESOURCe EXCEP");
}
}
@Override
protected Object handleGetObject(String key) {
return parent.getObject(key);
}
@Override
public Enumeration<String> getKeys() {
return parent.getKeys();
}
}
上面的代码有错误吗? 是否可以覆盖JSP / Servlet中的resourcebundle?