Modelは、ユーザープリケーションのビジネスロジックを実装します。
Strutsの作法では、ビジネスロジックを実装するActionクラス、リクエストデータを格納するActionFormクラスの2つから構成されます。
なお、各APIの詳細については、StrutsのJavadocを参照してください。
ActionFormクラスの作成
JSPの入力フォームに入力された情報を格納するクラスです。
org.apache.struts.action.ActionFormクラスを継承する以外は、JavaBeansと同様に開発します。
例
(ExtActionForm.java)
package sample; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import javax.servlet.http.HttpServletRequest; public class ExtActionForm extends ActionForm { // プロパティ private String name = null; // アクセッサ public void setName( String prm ) { name = prm; } public String getName( ) { return name; } // (1) public ActionErrors validate( ActionMapping mapping, HttpServletRequest request ) { ActionErrors ret = new ActionErrors(); if( (null == name) || (name.equals("")) ) { ret.add( "name", new ActionMessage("err.input", false) ); } return ret; } } |
(1) 検証機能
このメソッドは、Actionクラスが実行される前にStrutsランタイムから呼び出されます。
Actionクラスの作成
ユーザーのビジネスロジックを実装するクラスです。
org.apache.struts.action.Actionクラスを継承させる必要があります。
例
(ExtAction.java)
package sample; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ExtAction extends Action { // (1) public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res ) throws java.lang.Exception { ExtActionForm eaf = (ExtActionForm)form; String name = eaf.getName( ); eaf.setName( name + ", hello." ); // (2) return (mapping.findForward( "result" )); } } |
(1) 業務ロジックの実装
executeメソッドをオーバライドして、ユーザーの業務ロジックを実装します。
(2) 処理結果の遷移先を返却
処理結果として出力する遷移先(Struts設定ファイルで定義したforwardタグ)を指定します。