Spring MVC中的ResponseBody

时间:2012-05-25 07:41:23

标签: java spring model-view-controller

我有一个Spring MVC-Controller,可以生成某种Byte-Response,它直接写入Response-Outputstream。对于这种情况,我需要一个带有此签名的控制器

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

但是当用户未获得授权时,我想向他显示登录表单。所以我需要这样的方法签名

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

我该如何处理?

此致 迈克尔

1 个答案:

答案 0 :(得分:2)

对于安全检查的特定情况,通常安全框架会自动处理重定向,除非你做某种“升级”登录。

对于您的问题的一般情况: 如果您在响应中读取并为ModelAndView返回null,HandlerAdapter中会有一个禁用视图分辨率的特殊陷阱。

这意味着如果您只是将HttpServletResponse作为方法参数并自己编写字节,然后返回null,Spring将不采取进一步操作并提交响应。

然后,在您不想写字节而不想返回视图的情况下,只需正常返回ModelAndView。