2012-08-27 66 views
2

我正在嘗試爲Java Web應用程序找到HTML模板解決方案。我需要靈活性來從我選擇的任何來源加載模板,因爲它們中的大多數可能會在自定義數據庫中。在我的搜索中,我偶然發現了StringTemplate 4,但是我看到的所有示例都要求用戶將模板文件放在磁盤上。StringTemplate 4是否需要磁盤上的模板文件?

我注意到STGroup可以在沒有指定文件或目錄的情況下實例化,但是使用defineTemplate方法似乎不能替代使用基於文件的模板。不幸的是,在所有使用defineTemplate的測試中,我都無法獲取屬性。這一切都覺得我在黑暗中猜測。

是StringTemplate這個正確的庫嗎?還有另一個更好的工作嗎?

我開始考慮開發自己的。

回答

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

我只想通過模板來像這樣的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); 
} 
+0

這工作過,但我需要多個模板,以便我可以嵌套它們。 –