StringTemplate 4是否需要磁盘上的模板文件?

时间:2012-08-27 18:36:59

标签: java html web stringtemplate-4

我正在尝试为Java Web应用程序找到HTML模板解决方案。我需要灵活地从我选择的任何来源加载模板,因为大多数来源可能都在自定义数据库中。在我的搜索中,我偶然发现了StringTemplate 4,但是我看到的所有示例都要求用户将模板文件放在磁盘上。

我注意到可以在不指定文件或目录的情况下实例化STGroup,但是使用defineTemplate方法似乎不能替代使用基于文件的模板。不幸的是,在我使用defineTemplate进行的所有测试中,我都无法获得属性。这一切都让我觉得我在黑暗中猜测。

StringTemplate是否适用于此?还有另一个会更好的吗?

我开始考虑开发自己的。

2 个答案:

答案 0 :(得分:2)

我明白了......

import org.stringtemplate.v4.*;
import net.sf.json.*;

class STExampleApp {

        public static void main(String args[]) {
                String template = "decl(type, name, value) ::= \"<type> <name><init(value)>;\"\n"
                                + "init(v) ::= \"<if(v)> = <v><endif>\"";
                STGroup views = new STGroupString(template);
                ST decl = views.getInstanceOf("decl");
                decl.add("type", "int");
                decl.add("name", "x");
                decl.add("value", 12);
                System.out.println(decl.render());
        }

}

无需加载文件。我是从How to format decimal numbers with StringTemplate (ST) in Java?

那里学到的

答案 1 :(得分:1)

我只是将模板传递给ST()构造函数,如下所示:

@Test public void testNullAttr() throws Exception {
    String template = "hi <name>!";
    ST st = new ST(template);
    String expected =
        "hi !";
    String result = st.render();
    assertEquals(expected, result);
}