猿问

一旦被异常捕获,从异常处理程序重定向到控制器的操作?

我使用以下代码从异常处理程序重定向到控制器的操作,它正在工作,但 flowid 被附加到客户端的浏览器 URL 中。在没有那个flowid的情况下,有没有其他方法可以做到这一点?您也可以在http://localhost:8080/sample/home?flowId=fd19e86a-d9f8-485c-858c-41bcc5a10cd9下方看到 URL


@ExceptionHandler(DataAccessException.class)

public ModelAndView handleError(HttpServletRequest req, DataAccessExceptionex) {

        logger.error("Request: " + req.getRequestURL() + " raised " + ex);


        ModelAndView mav = new ModelAndView("redirect:/home");

        mav.addObject("exception", ex);

        mav.addObject("url", req.getRequestURL());

       return mav;

      }


慕沐林林
浏览 229回答 2
2回答

BIG阳

您可以使用 HttpServletResponse.sendRedirect():    @ExceptionHandler(DataAccessException.class)    public ModelAndView handleError(HttpServletRequest req, final HttpServletResponse response, DataAccessException ex) {        logger.error("Request: " + req.getRequestURL() + " raised " + ex);        response.sendRedirect("/sample");        return null;      }

天涯尽头无女友

这是 的默认行为spring redirect。您可以按照以下步骤进行更改:---基于XML的配置---*:对于XML基于配置的配置,只需添加<mvc:annotation-driven ignoreDefaultModelOnRedirect="true" />您的custom servlet xml configuration.---基于Java的配置---:您可以自动装配现有的RequestMappingHandlerAdapter并设置默认IgnoreDefaultModelOnRedirect属性true,如下所示 -&nbsp;@EnableWebMvc&nbsp;@Configuration&nbsp;public class CustomWebConfig {&nbsp; &nbsp; &nbsp;@Autowired&nbsp; &nbsp; &nbsp;private RequestMappingHandlerAdapter requestMappingHandlerAdapter;&nbsp; &nbsp; &nbsp;@PostConstruct&nbsp; &nbsp; &nbsp;public void init() {&nbsp; &nbsp; &nbsp; &nbsp; requestMappingHandlerAdapter.setIgnoreDefaultModelOnRedirect(true);&nbsp; &nbsp; &nbsp;}&nbsp;}现在您可以使用与ModelAndView您在示例中使用的相同的redirect.
随时随地看视频慕课网APP

相关分类

Java
我要回答