SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

続 Struts 2入門

Struts2のインターセプタの選定(1)

続 Struts 2入門(2)

リスト7 TokenSampleAction.java(抜粋)
@Namespace(value="/token")
@Results({
    @Result(name="start" , location="start.jsp") ,
    @Result(name="first" , location="first.jsp") ,
    @Result(name="second" , location="second.jsp") ,
    // 入力チェックエラー時に遷移
    @Result(name="invalid.token" , location="start.jsp")
})
public class TokenSampleAction extends ActionSupport {
    private static Logger log = Logger.getLogger(TokenSampleAction.class);

    /**
     * 最初の画面。遷移チェックを行わない。
     */
    @Action(value="start")
    public String start() throws Exception {
        log.debug("start ( no check token.)");
        return "start";
    }

    /**
     * 次に遷移するアクション。遷移チェックを行うのでtokenを利用。
     */
    @Action(value="first" ,
            interceptorRefs={
                @InterceptorRef(value="defaultStack"),
                @InterceptorRef(value="token"),
            })
    public String first() throws Exception {
        log.debug("token checked. - first success");
        return "first";
    }

    /**
     * さらに遷移して、遷移チェックを行うアクション。
     */
    @Action(value="second" ,
            interceptorRefs={
                @InterceptorRef(value="defaultStack"),
                @InterceptorRef(value="token"),
            })
    public String second() throws Exception {
        log.debug("token checked. - second success");
        return "second";
    }

    private String value1;

    public String getValue1() {
        return value1;
    }

    public void setValue1(String value1) {
        this.value1 = value1;
    }
}

 では実際に画面遷移チェックを行う画面を稼動させましょう。「http://127.0.0.1:8080/interceptors/token/start.action」をブラウザで開くと、図8の画面が開きます。

図8 遷移チェック前画面
図8 遷移チェック前画面

 この画面にて、「1番目へ進む」ボタンを押します。テキストボックスへはなんらかの値を入れておきます。すると、図9の画面が表示されます。

図9 遷移チェック1回目
図9 遷移チェック1回目

 続いて「次(2番目)へ進む」ボタンを押すとチェック完了画面が出力されます。ではここで遷移チェックエラーを出してみましょう。ブラウザの戻るボタンを押して、再び図8の画面を出し、先ほどと同じように「1番目へ進む」ボタンを押します。すると、正しい画面操作をしていないと判定し、TokenInterceptorは自動的に遷移エラーを送出し、Actionクラスでの設定どおり、図9の画面のようにエラーメッセージとともに最初の画面へ戻ります。

図10 遷移チェックエラー画面
図10 遷移チェックエラー画面

(7)Validation Interceptor

 Actionに対して入力チェック(Validator)を利用できるようになります。Validatorによって入力チェックエラーを検出した場合は、入力チェックエラー専用のメッセージ領域、FieldErrorの項目に内容が出力されます。また、struts-default.xmlにて、このインターセプタを用いないメソッドがstruts-default.xml(struts2-core-2.1.x.y.jar内に含まれる)で定義されています。

  • 例外メソッド:input,back,cancel,browse

(8)Workflow Interceptor

 Validaton Interceptorとセットで使われます。入力チェックエラーを検知すると、Actionクラスを実行する前に処理を中断し、result値にinputを渡します。Validaton Interceptor同様、このインターセプタが適用されないメソッドがstruts-default.xmlで定義されています。

  • 例外メソッド:input,back,cancel,browse

 Validation InterceptorとWorkflowInterceptorの詳細については『Struts 2入門(2)~バリデーションの仕組みを理解する(前編)』と『Struts 2入門(2)~バリデーションの仕組みを理解する(後編)』を参考にしてください。

まとめ

 今回はStruts 2の制御に関わるものに絞って紹介していきました。次回は残りのインターセプタの紹介と解説をします。

参考資料

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
続 Struts 2入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 東 浩二(アズマ コウジ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5024 2010/04/22 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー