java - 在java中解析速度变量

标签 java velocity

以下是我想要做的示例。 我有一堆文件,例如 test1.vm:

Welcome ${name}. This is test1.

然后我有一个名为defaults.vm的文件:

#set($name = "nmore")

我希望使用 defaults.vm 中的变量渲染 test1.vm(以及其他测试文件),而不使用 #parse,因为我必须修改所有测试文件。

有没有办法从附带的 java 文件中执行此操作?

最佳答案

我不确定您是否有任何限制或任何其他特定要求,但如果没有,您是否尝试过使用 Velocity API?像这样的事情:

Context context = new VelocityContext();

Template template = Velocity.getTemplate("src/main/resources/defaults.vm");
template.merge(context, NullWriter.NULL_WRITER);

StringWriter writer = new StringWriter();
Template toBeParsedTemplate = Velocity.getTemplate("src/main/resources/test1.vm");
toBeParsedTemplate.merge(context, writer);

String renderedContent = writer.getBuffer().toString();
System.out.println(renderedContent);

想法是,使用从 defaults.vm 生成的变量填充 Context 对象,并使用相同的上下文来评估 test1.vm.

我已经使用 Velocity 1.7 和 commons-io 2.4(对于 NullWriter)尝试过,似乎工作正常,但我不确定这是否符合您的要求或您'正在研究其他替代方案(不使用 Velocity API)。

有关 Context 对象的更多信息:
http://velocity.apache.org/engine/devel/developer-guide.html#The_Context

希望有帮助。

关于java - 在java中解析速度变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17561297/

相关文章:

java - 将 web liferay 内容嵌入到现有的 liferay web 内容中

java - Apache 的 Velocity — getTemplate() 。如何传递字符串/对象而不是 .VM 文件

速度 hasNext 方法

java - 我的 Switch 语句没有按预期工作

java - 当使用另一个 portlet 时,我可以使基于 struts 的 portlet 记住它的 View 吗?

jquery - 速度(VM)模板: how to disable for a block of jquery

java - 如何将自定义数字格式与速度的 NumberTool 一起使用而不产生错误?

java - 设置SWT表列的宽度

java - Gradle不执行子项目

java - Spring Rest存储库: is it safe?