差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

下次修改
前次修改
java:mustache:helloworld [2016/08/27 17:10]
tony 建立
java:mustache:helloworld [2023/06/25 09:48] (目前版本)
行 1: 行 1:
 {{tag>​java mustache}} {{tag>​java mustache}}
-====== Mustache Hello World ======+====== Mustache ​Hello World ======
 ===== Introduction ===== ===== Introduction =====
-Mustache是Albert所找的template system engine。+Mustache是Albert所找的template system engine。目的是為了讓你可以簡單的只使用資料物件(bean),用少少甚至無邏輯去定義輸出格式。如果想切換輸出格式,只要修改樣本檔案就好
 ===== How to? ===== ===== How to? =====
 +==== Create Engine ====
 +使用Mustache的第一步就是要建立它的Engine instance,而方法就是透過MustacheEngineBuilder。以我的例子來說,我告訴了builder樣本的放置位置,第一優先從classpath中的templates資料夾中找尋txt結尾之檔案,第二優先為工作目錄的templates中找尋txt結尾之檔案:​
 +<code java>
 +TemplateLocator locator1 = new ClassPathTemplateLocator(1,​ "​templates","​txt"​);​
 +TemplateLocator locator2 = new FileSystemTemplateLocator(2,​ Paths.get("​templates"​).toString(),​ "​txt"​);​
  
-===== Resource ===== +MustacheEngine mustacheEngine ​MustacheEngineBuilder 
-  * [[https://​en.wikipedia.org/​wiki/​Mustache_(template_system)|wiki - Mustache_(template_system)]]+ .newBuilder() 
 + .addTemplateLocator(locator1) 
 + .addTemplateLocator(locator2) 
 + .build();​ 
 +</​code>​ 
 +==== 第一個Template ​==== 
 +以下為我的測試資料物件: 
 +<code java> 
 +public class TestBean {
  
 + public String getName(){
 + return "​testName";​
 + }
 +
 + public String getPasswd(){
 + return "​testPasswd";​
 + }
 +
 + public boolean showPasswd(){
 + return false;
 + }
 +}
 +</​code>​
 +以下為我的執行轉換程式,會去讀engine設定路徑下檔名為template1.txt的檔案,並將TestBean做轉換:​
 +<code java>
 +Mustache template = mustacheEngine.getMustache("​template1"​);​
 +System.out.println(template.render(new TestBean()));​
 +</​code>​
 +以下為我的範本,會顯示TestBean的name,並根據showPasswd決定顯示方式。#​代表存在或為true;^代表不存在或為false:​
 +<​code>​
 +name={{name}}
 +passwd={{#​showPasswd}}{{passwd}}{{/​showPasswd}}{{^showPasswd}}****{{/​showPasswd}}
 +</​code>​
 +==== Output ====
 +<​code>​
 +name=testName
 +passwd=****
 +</​code>​
 +===== Summary =====
 +如果把邏輯寫在程式中,資料物件就不是這麼單純的資料物件;如果把邏輯寫在樣本中,樣本就不是那麼容易維護。選擇透過程式或樣本決定輸出格式,就看你根據需求的取捨。
 +===== 後記 =====
 +如果要選擇性顯示資料又不跳行,要寫成這樣:​
 +<​code>​
 +{{#data1}}
 +Data1:​{{data1}}
 +{{/data1}}
 +{{#data2}}
 +Data2:​{{data2}}
 +{{/data2}}
 +</​code>​
 +如果寫成以下形式,且Data1不存在時,會多一空白行。
 +<​code>​
 +{{#​data1}}Data1:​{{data1}}{{/​data1}}
 +{{#​data2}}Data2:​{{data2}}{{/​data2}}
 +</​code>​
 =====  ===== =====  =====
 ---- ----