<%@ jet package="com.foo.jet.generated" class="HelloJet" %> Hello, JET.
Template種別 | 推奨拡張子 |
テキストを作るTemplate | *.txtjet |
XMLを作るTemplate | *.xmljet |
Javaソースを作るTemplate | *.javajet |
JSPを作るTemplate | *.jspjet |
directive | 意味 | 例 |
package | 生成されるGeneratorのpackage名 | com.foo.jet.generated |
class | 生成されるGeneratorのclass名 | HelloJET |
imports | 利用するクラス。スペース区切りで指定 | java.util.* java.math.* |
startTag | JET内にプログラムを書くときの開始タグ。省略時は"<%" | "[%"など |
endTag | JET内にプログラムを書くときの終了タグ。省略時は"%>" | "%]"など |
skelton | 生成されるGeneratorクラスのひな形クラス | |
nlString | nl=new line。改行文字。省略時は System.getProperties*().getProperty("line.separator") |
package com.foo.jet.generated; public class HelloJet { protected static String nl; public static synchronized HelloJet create(String lineSeparator) { nl = lineSeparator; HelloJet result = new HelloJet(); nl = null; return result; } protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; protected final String TEXT_1 = "Hello, JET."; public String generate(Object argument) { StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append(TEXT_1); return stringBuffer.toString(); } }
package com.foo.jet; import com.foo.jet.generated.HelloJet; public class HelloJetInvoker { public static void main(String[] args) { HelloJet generator = HelloJet.create(null); String result = generator.generate(null); System.out.println(result); } }
Hello, JET.
<%@ jet package="com.foo.jet.generated" class="HelloJet" %> Hello, <%= argument%>.
package com.foo.jet; import com.foo.jet.generated.HelloJet; public class HelloJetInvoker { public static void main(String[] args) { HelloJet generator = HelloJet.create(null); String result = generator.generate("Taro"); System.out.println(result); } }
Hello, Taro.
<%@ jet package="com.foo.jet.generated" class="HelloJet" imports="java.util.*" %> Hello, <% // 引数の内容を列挙 Collection col = (Collection)argument; for( Iterator it = col.iterator() ; it.hasNext() ; ){ stringBuffer.append(it.next()); stringBuffer.append(","); } // 最後のピリオドを消す stringBuffer.deleteCharAt(stringBuffer.length()-1); %>.
package com.foo.jet; import com.foo.jet.generated.HelloJet; public class HelloJetInvoker { public static void main(String[] args) { HelloJet generator = HelloJet.create(null); Collection students = new LinkedList(); students.add("Taro"); students.add("Jiro"); students.add("Sabro"); String result = generator.generate(students); System.out.println(result); } }
Hello, Taro,Jiro,Sabro.
JSPの生成の場合、JSPタグの"<%","%>"と、JETの"<%","%>"が混ざってしまいます。このようなときのためにJETではタグを変更できるようになっています。ここでは"[%","%]"を使います。
<%@ jet package="com.foo.jet.generated" class="HelloJSP" imports="java.util.*" startTag="[%" endTag="%]" %> [% String pageName = (String)((Map)argument).get("PAGE_NAME"); String actionName = (String)((Map)argument).get("ACTION_NAME"); %] <%@page contentType="text/html;charset=Shift_JIS" session="true" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <html> <head> <title>[%=pageName%]</title> </head> <body> <html:form action="[%=actionName%]"> <table> <tr><td>注文番号</td><td>:</td><td><html:text parameter="orderNo"/></td></tr> <tr><td>注文個数</td><td>:</td><td><html:text parameter="orderAmount"/></td></tr> <tr><td colspan="3" align="right"><html:submit/></td><tr> </table> </html:form> </body> </html>
package com.foo.jet; import java.util.HashMap; import java.util.Map; import com.foo.jet.generated.HelloJSP; public class HelloJSPInvoker { public static void main(String[] args) { HelloJSP generator = HelloJSP.create(null); Map<String,String> argMap = new HashMap<String,String>(); argMap.put("PAGE_NAME","Order1.jsp"); argMap.put("ACTION_NAME","/OrderAction1"); System.out.println( generator.generate(argMap)); } }
<%@page contentType="text/html;charset=Shift_JIS" session="true" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <html> <head> <title>Order1.jsp</title> </head> <body> <html:form action="/OrderAction1"> <table> <tr><td>注文商品</td><td>:</td><td><html:text parameter="orderNo"/></td></tr> <tr><td>注文個数</td><td>:</td><td><html:text parameter="orderAmount"/></td></tr> <tr><td colspan="3" align="right"><html:submit/></td><tr> </table> </html:form> </body> </html>
JETで生成されるGeneratorは普通のPOJOで特定のライブラリに依存しないので、プログラムのGeneratorとしてだけではなく、アプリ中での帳票のGeneratorとして使うことも出来る。
<%@ jet package="com.foo.jet.generated" class="ExpReultGenerator" imports="java.util.*" %> 試料番号,経過時間,温度,電圧 <% Collection col = (Collection)argument; for( Iterator it = col.iterator() ; it.hasNext() ; ){ ExamResult res = (ExamResult)it.next()); %> <%= res.getId() %>,<%= res.getTime() %>,<%= res.getTemp() %>,<%= res.getVol() %> <% } %>