リクエスト属性へのアクセス
コマンドクラスからjavax.servlet.http.HttpServletRequestから取得するパラメータにはwisdomのラッパークラスwisdom.core.application.IRequestParserを使用します。
wisdom.core.application.IRequestHandlerの取得と使用
IRequestHandlerインターフェースはリクエスト属性およびセッション属性へのアクセスを定義したインターフェースです。
このオブジェクトのインスタンスにはAbstractRequestCommandのインスタンス変数「rh」が利用可能です。
例) AbstractRequestCommandのサブクラスでのIRequestHandlerの使用
package tutorial;
import wisdom.core.application.AbstractRequestCommand;
public class HelloWorld extends AbstractRequestCommand {
protected void _execute() throws Exception {
String name = rp.getString("name");
rh.setAttribute("name", name);
MyObject o = (MyOject)rh.getAttribute("o");
}
}
例) IRequestHandlerを介したリクエスト属性の設定
rh.setAttribute("name", name);
上の例では、nameという名前でString型のオブジェクトをリクエストの属性に設定しています。
例) IRequestHandlerを介したリクエスト属性の取得
MyObject o = (MyOject)rh.getAttribute("o");
上の例ではリクエスト属性から指定した名前のオブジェクトを取得しています。リクエスト属性はおもにJSP側で利用されます。
この場合、目的のオブジェクトがリクエスト属性にない場合、wisdom.core.request.AttributeNotFoundExceptionが送出されます。通常この例外をcatchする必要はありませんが、画面遷移の都合などで、目的のオブジェクトがリクエスト属性になくても可能な制御を行いたい場合には、戻り値がnullになる以下のメソッドを利用してリクエスト属性にアクセスします。
MyObject o = (MyOject)rh.getAttribute("o", true);
※JSPでは、IRequestHandlerのインスタンスは取得できないので、IRequestParserを介してリクエスト情報にアクセスします。