Apache Wicket 7 - 应用程序属性

时间:2016-02-05 01:21:27

标签: java wicket

Wicket相当新,请原谅我的无知。

我有一个Wicket应用程序...以WicketApplication.class开头我有一个WicketApplication.properties文件来加载一些值。属性文件位于类文件旁边(相同的包)。工作正常,没有问题。

现在,我想将属性文件移到应用程序WAR / JAR之外。将应用程序导出为WAR以在Tomcat上运行。我在tomcat root&下创建了一个名为properties的文件夹。将WicketApplication.properties移动到此目录。在WicketApplication.class中添加了以下init()方法......

String realPath = getServletContext().getRealPath("/");
        realPath = realPath.replaceAll("\\\\", "/");
        if (realPath.toUpperCase().indexOf("WEBAPPS") != -1) {
            String newRes = realPath.substring(0,  realPath.toUpperCase().indexOf("WEBAPPS") -1);
            System.out.println (newRes + "/properties");
            getResourceSettings().getResourceFinders().add(new Path( newRes + "/properties"));
        }

我抛出异常。

如何“外部化”属性文件?

另外,如果我可以更进一步,如何将属性文件名映射到类名... .., myapplication.properties -> WicketApplication.class

提前致谢。

1 个答案:

答案 0 :(得分:1)

您需要使用application.getResourceSettings().getStringResourceLoaders().add(...)添加新的IStringResourceLoader。 有关默认值,请参阅https://github.com/apache/wicket/blob/515e2be2a5301f5caf7b1baee4a593d21c20e275/wicket-core/src/main/java/org/apache/wicket/settings/ResourceSettings.java#L220-L224

如果要为HTML文件添加自定义位置,则应使用

IResourceFinder

无法将myapplication.properties映射到WicketApplication.class。通过添加一个额外的IStringResourceLoader,您只需告诉Wicket在另一个地方进行搜索。