Java StringTemplate 4是否需要磁盘上的模板文件?
我正在尝试为Java web应用程序寻找HTML模板解决方案。我需要从我选择的任何源加载模板的灵活性,因为大多数模板可能位于自定义数据库中。在我的搜索中,我偶然发现了StringTemplate4,但是我看到的所有示例都要求用户将模板文件放在磁盘上 我注意到STGroup可以在不指定文件或目录的情况下实例化,但是使用defineTemplate方法似乎不能替代使用基于文件的模板。不幸的是,在使用defineTemplate进行的所有测试中,我都未能使属性正常工作。这一切感觉就像我在黑暗中猜测 StringTemplate是用于此的正确库吗?还有其他更好的吗 我开始考虑发展我自己。 < P>我明白了……/P>Java StringTemplate 4是否需要磁盘上的模板文件?,java,html,web,stringtemplate-4,Java,Html,Web,Stringtemplate 4,我正在尝试为Java web应用程序寻找HTML模板解决方案。我需要从我选择的任何源加载模板的灵活性,因为大多数模板可能位于自定义数据库中。在我的搜索中,我偶然发现了StringTemplate4,但是我看到的所有示例都要求用户将模板文件放在磁盘上 我注意到STGroup可以在不指定文件或目录的情况下实例化,但是使用defineTemplate方法似乎不能替代使用基于文件的模板。不幸的是,在使用defineTemplate进行的所有测试中,我都未能使属性正常工作。这一切感觉就像我在黑暗中猜测 S
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());
}
}
无需加载文件。我从中学到这一点:我发现了
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());
}
}
无需加载文件。我从:中学到了这一点,我只需将模板传递给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);
}
我只需将模板传递给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);
}
这也行得通,但我需要多个模板才能嵌套它们。这也行,但我需要多个模板才能嵌套它们。