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で推奨されているやり方はどういうやり方なのか。
・上記のコードのようなやり方をするには、どうすればいいか。

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

回答の条件
  • 1人2回まで
  • 登録:2009/11/16 12:13:00
  • 終了:2009/11/16 22:22:43

ベストアンサー

id:higayasuo No.1

やす回答回数11ベストアンサー獲得回数12009/11/16 21:50:03

ポイント100pt

@Resource

protected HttpServletResponse response;

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

次のような感じ。

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

id:nacookan

ありがとうございます。

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

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

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

2009/11/16 22:21:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません