学習用WEBフレームワークEzServlet/ブラッシュアップしてシンプルになりました。。。


当初より、大分simpleに出来るようになりました...^^


単純な「足し算」アプリであれば、以下の様に記述するだけでokですよ。。。


クラス数や行数少ないという話だけではありませんよ。ソースの中身がシンプルなのです ( ̄0 ̄)b ```


HTML名の名称「calc.html」

<html>                                                        <!-- POINT : 純HTML(jspじゃなくて)でok!-->
   <body>
      <form>
         項目1<input type="text" name="item1"/>+
         項目2<input type="text" name="item2"/>=
         <tg:out name="result">計算結果</tg>                  <!-- POINT : MOCKメッセージが入っていてもok!--> 
         <br/>
         <input type="button" name="add" value="計算">
         <br/>
         <tg:out name="errors">エラーメッセージ</tg>
      </form>
   </body>
</html>

Hoge.htmlの入出力項目の値を格納するBEAN

import static xxx.trygun.framework.util.validate.EzValidateUtil.*;
public class Calc {                                          //POINT : 何も継承しなくてok!
   public String[] errors;
   public String item1;
   public String item2;
   public long   result;                                     //POINT : 出力項目の型はString以外もok!
   public boolean validate() {
      EzMessage message = new EzMessage();
      numeric(message).name("項目1").digit(10).required().value(item1);
      numeric(message).name("項目2").digit(10).required().value(item2);
      errors = message.getMessage();
      return message.isSuccess();
   }
}


Calc.htmlのボタンに対応するコントローラー

import static xxx.trygun.framework.util.convert.Ezconvert.*;
public class CalcController {                                       //POINT : 何も継承しなくてok!
   public void add(EzRequest request, EzResponse response, Calc calc) {
      // 画面入力値をCalcへ設定
      request.bind(calc);                                           //POINT : 各項目にセットするソースを記述しなくてもok!
      // 画面入力値検証
      response.continuation(calc.validate());                       //POINT : 検証結果を分岐で記述しなくてもok!
      // 計算処理(ビジネスロジック)
      calc.result = parseLong(calc.item1) + parseLong(calc.item2);  //POINT : setter,getterがなくてもok!
//      // 計算結果画面を表示
//      response.to(calc);                                            //POINT : 画面遷移をタイプセーフに記述ok!
   }
}


直感的で分かり易くなりました。

これなら、自動生成(plugin)を利用しなくても開発できそうな気がしてきた。

まぁ、単純になればなるほど定型&機械的作業になるから、自動生成(plugin)は利用したほうが便利だろけど…