Top > SAStrutsあれこれ > チュートリアルプロジェクトにアクションを追加しましょう。
#freeze
&size(20){チュートリアルにある「足し算(http://localhost/sa-struts-tutorial/add/」をちょっと変えて「引き算」を追加してみましょう。};

やることは以下の3つです。
> アクションクラスの追加
> アクションフォームクラスの追加
> JSPファイルの追加

&size(20){そうです!struts-config.xmlは編集不要です。\(^ ^)/ビバ!SAStruts!};

----

* アクションクラスの追加 [#k980b608]
"sa-struts-tutorial\src\main\java\tutorial\action"配下に以下のMinusActionアクションクラスを追加しましょう。
#code(java){{
package tutorial.action;
 
import javax.annotation.Resource;
import org.seasar.struts.annotation.ActionForm;
import org.seasar.struts.annotation.Execute;
import tutorial.form.MinusForm;
 
public class MinusAction {
 
    public Integer result;
 
    @ActionForm
    @Resource
    protected MinusForm minusForm;
 
    @Execute(validator = false)
    public String index() {
        return "index.jsp";
    }
 
    @Execute(input = "index.jsp")
    public String submit() {
        result = Integer.valueOf(minusForm.arg1) - Integer.valueOf(minusForm.arg2);
        return "index.jsp";
    }
}
}}

アクションクラスに、ブラウザから呼び出すことができるメソッドが2つあります(@Executeがでアノテートされているメソッド)。これは、やたらアクションクラスが増えなくて助かりますね。メソッドの振り分けは、URLパスで行えます。&br;
http://localhost/sa-struts-tutorial/minus/であれば、index()メソッド&br;
http://localhost/sa-struts-tutorial/minus/submitであれば、submit()メソッド
となります。

* アクションフォームの追加 [#sc187f9c]
"sa-struts-tutorial\src\main\java\tutorial\form"配下に以下のMinusForm.javaクラスを追加しましょう。
#code(java){{
package tutorial.form;
 
import org.seasar.struts.annotation.IntegerType;
import org.seasar.struts.annotation.Required;
 
public class MinusForm {
 
    @Required
    @IntegerType
    public String arg1;
 
    @Required
    @IntegerType
    public String arg2;
}
}}
@Requiredや@IntegerTypeはバリデートアノテーションです。

* JSPファイルの追加 [#g7b9f4aa]
"sa-struts-tutorial\webapp\WEB-INF\view\minus"を作成して、以下の"index.jsp"
を作成しましょう。
#code(jsp){{
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>Tutorial: Minus</title>
<link rel="stylesheet" type="text/css" href="${f:url('/css/sa.css')}" />
</head>
<body>
 
<h1>Tutorial: Minus</h1>
 
<html:errors/>
<s:form>
<html:text property="arg1"/> -
<html:text property="arg2"/>
= ${f:h(result)}<br />
<input type="submit" name="submit" value="サブミット"/>
</s:form>
</body>
</html>
}}

* 実行しましょう [#w0a80b59]
ブラウザから
http://localhost/sa-struts-tutorial/minus/
にアクセスしてみましょう。&br;↓のような画面がでればOKです。&br;
&ref(minus_action_1.jpg);&br;
↓&br;
結果はこんな感じです。&br;
↓&br;
&ref(minus_action_2.jpg);&br;

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS