以下是我想要做的示例。 我有一堆文件,例如 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/