重定向时未找到带有 URI 的 HTTP 请求的映射

No mapping found for HTTP request with URI while redirect

我已经注册了以下 viewResolwewer:

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

并编写了以下控制器方法:

    @ExceptionHandler(value = Exception.class)
    public String redirectToErrorPage(){
        return "redirect:/errorPage";
    }

执行以下方法时,我看到以下日志:

WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/errorPage] in DispatcherServlet with name 'appServlet'

名称为 errorPage.jsp 的页面位于页面文件夹下:

请解释我哪里错了?

您正在重定向到 URL“/errorPage”,但 /errorPage 没有请求映射。您可以添加具有该请求映射的控制器,例如:

@Controller
public class ErrorPageController {

    @RequestMapping("/errorPage")
    @ResponseStatus(value=HttpStatus.INTERNAL_SERVER_ERROR)
    public String showErrorPage(){
        return "errorPage";
    }
}

或者不重定向,您可以只显示来自异常处理程序的错误页面。

@ExceptionHandler(value = Exception.class)
@ResponseStatus(value=HttpStatus.INTERNAL_SERVER_ERROR)
public String handleException(Exception e){
    return "errorPage";
}