きのうの、
MVCにおけるコントローラーの土管化の問題とカオル姫方式の終焉について
http://blog.goo.ne.jp/xmldtp/e/b153ff45bc647a503d4f1996ead9ae26
で、最近、コントローラーが土管化している話を書いたけど、
逆に、土管化しないで、コントローラーで詰め替えると、
ソフトウェア工学っぽく、属人性を排除して、規則的に、プログラムを作れる。
Struts2でその例を示す。
■規則的に、ビュー、コントローラーをつくり、モデルを呼び出す。
・まず、HTMLで画面を作る
→これは、デザインなので、ソフトウエア工学の範囲外かな・・・
・画面のフォームに対応して、Actionをつくる
→ここで言っているActionは、Struts2のstruts.xmlで指定するような、
アクションのこと。画面から呼び出されるコントロール
・そのフォーム内で、入力項目や変数項目となるところを、
アクション側の属性として項目定義し、
Limyを使って、アクセサー(setter,getter)をつくる
フォームの名前&アクションの属性名は
画面名フィールド名
にする。たとえば、ログイン画面のパスワード入力項目の場合
loginPassword
にする。
・その画面の遷移先を、struts.xmlに書く
→ゼロコンフィグレーションを使ってる場合、アノテーションで
・画面遷移先の項目も、そのアクションの中に属性として書き
Limyを使って、アクセサー(setter,getter)をつくる
フォームの名前&アクションの属性名は
画面名フィールド名
にする。たとえば、メニュー画面のユーサー名出力項目の場合
menuUsername
にする。
・ちなみに、セッションに入出力する属性は、画面名が付かない
username,passwordなど
■こうすると
・アクションで、画面の値を受け取り、次画面の値をセットするようになる
→Actionでは、セッションもDBデータも画面データもすべて受け取り、
Javaで書けるので、自由度は増す。
・データ修正は、すべてコントローラーであるアクションでとまる
・セッションと画面項目名が異なるので(セッションには画面名がない)
セッションのデータを画面で参照、書き換えすることがない
これが、どんなふうに便利なのかは、またこんど・・