タイトル
TOPJavaTIPS → This Page

Seasar2でDIされるPOJOのActionにRequestとResponseを追加【Java の TIPS、小ネタ、注意点】

前提

Java開発におけるSeasar2のPOJOのActionにRequestResponseを追加する方法を紹介します。
このページに記載している内容は2010/07/25に書かれたものです。
掲載している画面や方法が将来的に変更されている場合があります。

概要

S2StrutsやSAStrutsを使ってウェブ・アプリを実装すると、
アクション・クラス(Action)はPOJOのクラスとして実装するので
通常のStrustみたいにメソッドの引数にHttpServletRequestやHttpServletResponseが渡ってきません。
でも使いたい場面が時々あります。

対応策

対応は意外と簡単。
HttpServletRequestとHttpServletResponseのプロパティを用意し、
publicのSetterメソッドを用意してやるだけでSeaserが自動で渡してくれます。

以下のような基底クラスを用意し、Actionクラスはこれを拡張するようにすればOK。
ActionImplBase クラス
package jp.co.xxxxx.common.base;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * アクションの基底クラス
 * 
 * @author mitchy
 */
public abstract class ActionImplBase {

    /** リクエスト */
    protected HttpServletRequest request;

    /** レスポンス */
    protected HttpServletResponse response;

    /**
     * リクエストのセット
     * 
     * @param request
     *            リクエスト
     */
    public void setRequest(HttpServletRequest request) {
        this.request = request;
    }

    /**
     * レスポンスのセット
     * 
     * @param response
     *            レスポンス
     */
    public void setResponse(HttpServletResponse response) {
        this.response = response;
    }

}

これで普通に resuest.getAttribute や response.setContentType などが使えます。
※クラス変数を宣言するだけでS2StrutsやSAStrutsが勝手にセットしてくれる。

更新履歴

2010/07/25 新規作成

TOPJavaTIPS → This Page