人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SAStrutsのエラーページ表示について質問です。

たとえば http://example.com/app/show?id=123 みたいなURLをリクエストするとデータベースから123をキーにデータを取得して画面に表示するような場合、データベースに123に該当するレコードが存在しないケースが考えられます。

その場合、404ステータスコードを返しつつ、それなりのエラーページを返すのが妥当だと思います。

この処理をSAStrutsではどう書けばいいでしょうか。

public HogeService hogeService;
public String id;
public Hoge hoge;

@Execute(validator = false)
public String show(){
hoge = hogeService.findById(id);
if(hoge == null){
throw new HttpNotFoundException();
}
return "show.jsp"
}

できればこんな風に例外をスローするだけで自動的にやってくれる感じだとうれしいのですが...

同様に、404だけじゃなく403(Forbidden)も、権限チェックをしてNGなら例外をスローするだけ、っていうのが理想です。

・SAStrutsで推奨されているやり方はどういうやり方なのか。
・上記のコードのようなやり方をするには、どうすればいいか。

どちらの回答でも構いません。よろしくお願いします。

●質問者: nacookan
●カテゴリ:ウェブ制作
✍キーワード:403 hoge JSP ng sastruts
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● やす
●100ポイント ベストアンサー

@Resource

protected HttpServletResponse response;

と書いておくとresponseがセットされるので、それをつかってsendError()をよびだせばOKです。

次のような感じ。

response.sendError(404, "id(" + id + ")が見つかりません");

◎質問者からの返答

ありがとうございます。

無事にそのやり方でできました。

SAStrutsのやり方というよりは、Strutsのいつものやり方でいいんですね。

"薄いラッパー" の意味がわかってきました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ