我有一个Spring MVC-Controller,可以生成某种Byte-Response,它直接写入Response-Outputstream。对于这种情况,我需要一个带有此签名的控制器
@BodyResponse
@AuthorizedMethod(...)
public void createPdf() {
// doSomething on response
}
但是当用户未获得授权时,我想向他显示登录表单。所以我需要这样的方法签名
@AuthorizedMethod(...)
public ModelAndView createPdf() {
return new ModelAndView("login.jsp");
}
我该如何处理?
此致 迈克尔
答案 0 :(得分:2)
对于安全检查的特定情况,通常安全框架会自动处理重定向,除非你做某种“升级”登录。
对于您的问题的一般情况: 如果您在响应中读取并为ModelAndView返回null,HandlerAdapter中会有一个禁用视图分辨率的特殊陷阱。
这意味着如果您只是将HttpServletResponse作为方法参数并自己编写字节,然后返回null,Spring将不采取进一步操作并提交响应。
然后,在您不想写字节而不想返回视图的情况下,只需正常返回ModelAndView。