gpt4 book ai didi

spring - 如何在 Spring MVC 拦截器中转发

转载 作者:行者123 更新时间:2023-12-01 01:35:03 25 4
gpt4 key购买 nike

我像这样定义了 View 解析器:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/views/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>

我有一个拦截器,当某些条件不通过时,我想转发到一个jsp页面,我是这样实现的:
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/WEB-INF/views/jsp/info.jsp");
requestDispatcher.forward(request, response);

上面,我要转发的页面是硬代码,我不想那样做,有什么方法可以从 View 解析器中获取页面吗?

最佳答案

如果您想转发到来自 postHandle 的 View 本来会更容易,因为在 postHandle您可以完全访问 ModelAndView。

也可以在 preHandle 中方法,感谢 ModelAndViewDefiningException ,这允许您要求 spring 从处理程序处理中的任何地方进行转发。

你可以这样使用它:

public class ForwarderInterceptor extends HandlerInterceptorAdapter {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// process data to see whether you want to forward
...
// forward to a view
ModelAndView mav = new ModelAndView("forwarded-view");
// eventually populate the model
...
throw new ModelAndViewDefiningException(mav);
...
// normal processing
return true;
}

}

关于spring - 如何在 Spring MVC 拦截器中转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27381517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com