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