ひがやすを技術ブログ

電通国際情報サービスのプログラマ

S2Pages

http://d.hatena.ne.jp/hoso-kawa/20040315#1079284448
でもでているS2のHTML Template Engineですが、
名前が長くて言いにくいので、勝手にm(_ _)m
S2Pagesと名づけてみました。
足し算するサンプルだと多分こんな感じ。




<form>
<input type="text" s2:binding="arg1" s2:type="Integer"/> +
<input type="text" s2:binding="arg2" s2:type="Integer"/> =
<span s2:binding="result"/>
<input type="submit" s2:event="calc" value="足し算"/>
</form>


class MyListener {
private Adder adder_;

MyListener(Adder adder) {
adder_ = adder;
}
//s2:eventと同名のメソッドが自動的に呼び出される
public String calc(HttpServletRequest req, HttpServletResponse res) {
//型の変換は自動的に行われる。
int arg1 = ( (Integer) req.getAttribute("arg1")).intValue();
int arg2 = ( (Integer) req.getAttribute("arg2")).intValue();
//業務ロジックはサービスに依頼する
int result = adder_.add(arg1, arg2);
req.setAttribute("result", new Integer(result));
//戻り値で遷移先を指定する。nullだと自分に戻る。
return null;
}
interface Adder {
public int add(int arg1, int arg2);
}
class AdderImpl implements Adder {
public int add(int arg1, int arg2) {
return arg1 + arg2;
}
}






基本は、HTMLにs2属性を付加するだけで、100%ブラウザでプレビューが可能。
余分な設定ファイルを持たない。
HTML(View)とEventListener(Controller)と業務ロジック(Model)が
きちんと分離されている。
requestの型の変換やJavaBeansへのマッピングは自動的に行われる。
JavaBeansからHTMLへのバインディングは自動的に行われる。
Controller,ModelはPOJOである。
requestやresponseはモックが用意されるので、
EventListenerのテストも可能。