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タグ)を指定します。