在WEB-INF / classes文件夹外加载资源包

时间:2012-11-30 06:07:48

标签: java resourcebundle

由于某种原因,messages.properties文件位于WEB-INF文件夹中的某个位置,但位于WEB-INF/classes文件夹之外。具体来说,文件的路径是/WEB-INF/messages/messages.properties。如何使用ResourceBundle.getBundle( ? )方法加载此资源包?

2 个答案:

答案 0 :(得分:1)

您可以使用Servlet上下文获取路径,如下所示;

getServletContext().getResource("/messages/messages.properties).getPath();

然后使用URLClassLoader()创建一个类加载器并将其传递给getBundle()方法。

答案 1 :(得分:0)

我只是整理了一个处理这种情况的ResourceBundle.Control扩展:

https://gist.github.com/Tzrlk/82d74c074e63955a8a35

用法:

ServletContext servletContext = //! get access to servlet context instance
Locale locale = //! get access to locale instance

try {
    ResourceBundle.Control control = new ServletContextBundleControl(servletContext);
    ResourceBundle bundle = ResourceBundle.getBundle("/WEB-INF/messages/messages", locale, control);
} catch (MissingResourceException error) {
    // handle exception 
}