0

我有一个配置文件(.cfg),其中配置了配置我面临的问题是如何读取此配置文件并将所需的值添加到 freemarker 模板(ftl)文件

配置文件

server = localhost
username = admin
password = somepassword

测试.ftl

....
<password>I need to populate this password from test.ftl password field </password>

...

谁能告诉我我该怎么做?谢谢

4

1 回答 1

0

没有从 Freemarker 模板读取文件之类的东西。您需要像往常一样在 Java 中读取文件,然后将变量放入 Freemarker 模板模型。

这将是一个在应用程序启动时读取配置文件的好主意。我认为您的 .cfg 格式与标准 .property 文件格式兼容。因此,您应该能够使用以下代码读取它(假设配置文件在运行时位于类路径中):

Properties configProp = new Properties();
try (InputStream input = this.getClass().getClassLoader().getResourceAsStream("config.cfg")) {
  configProp.load(input);
}
String server = configProp.getProperty("server"); // "localhost"
String username = configProp.getProperty("username"); // "admin"
String password = configProp.getProperty("password"); // "somepassword"

现在你有了你的变量。

至于 Freemarker,这取决于您如何使用它。无论哪种方式,您都需要将变量放入模板模型。

这是一个 Java API 示例:

Map<String, Object> model = new HashMap<>();
model.put("server", server);
model.put("username", username);
model.put("password", password);
Template temp = freemarkerConfig.getTemplate("test.ftl"); // freemarkerConfig is created elsewhere
Writer out = new OutputStreamWriter(System.out);
temp.process(model, out);

如果是 Spring MVC,以类似的方式将变量放入控制器视图 Model 或 ModelAndView。

测试.ftl:

server: ${server}
username: ${username}
password: ${password}
于 2020-12-05T22:23:42.307 回答