1

ある種のByte-Responseを生成するSpringMVC-Controllerがあり、これはResponse-Outputstreamに直接書き込まれます。この場合、この署名を持つコントローラーが必要です

@BodyResponse
@AuthorizedMethod(...)
public void createPdf() {
  // doSomething on response
}

しかし、ユーザーが許可されていない場合は、ログインフォームを表示したいと思います。だから私はそのようなメソッドシグネチャが必要です

@AuthorizedMethod(...)
public ModelAndView createPdf() {
  return new ModelAndView("login.jsp");
}

どうすればこれを処理できますか?

よろしく、マイケル

4

1 に答える 1

2

セキュリティチェックの特定のケースでは、通常、セキュリティフレームワークは、ある種の「アップグレード」ログインのように実行していない限り、そこでリダイレクトを自動的に処理します。

質問の一般的なケースの場合:HandlerAdapterには、応答を読み込んでModelAndViewに対してnullを返すと、ビューの解決を無効にする特別なトラップがあります。

これが意味するのは、メソッドパラメータとしてHttpServletResponseを受け取り、自分でバイトを書き込んでからnullを返すと、Springはそれ以上のアクションを実行せず、応答をコミットするということです。

次に、バイトを書き込みたくなく、代わりにビューを返したい場合は、通常どおりModelAndViewを返します。

于 2012-05-25T07:48:17.670 に答える