spring-boot-thymeleaf-重定向到错误页

sh7euo9m  于 2021-07-07  发布在  Java
关注(0)|答案(3)|浏览(282)

我有一个springboot应用程序。用百里香叶
我的属性文件中有:


# max file size - default 1MB

spring.servlet.multipart.max-file-size=10MB

# max request size - default 10MB

spring.servlet.multipart.max-request-size=25MB

此控制器:

@Controller
public class MyErrorController implements ErrorController {

    private final static String PATH = "/error";

    @RequestMapping(PATH)
    @ResponseBody
    public String getErrorPath() {
        return "error/genericError";
    }

}

以及此错误页:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">

<body>
 <div class="container">

        <div class="jumbotron text-center">

            <h1>Uh-oh! Something Happened!</h1>
            <!--  As we are using Thymeleaf, you might consider using
                  ${#httpServletRequest.requestURL}. But that returns the path
                  to this error page.  Hence we explicitly add the url to the
                  Model in some of the example code. -->
            <p th:if="${url}">
                <b>Page:</b> <span th:text="${url}">Page URL</span>
            </p>

            <p th:if="${timestamp}" id='created'>
                <b>Occurred:</b> <span th:text="${timestamp}">Timestamp</span>
            </p>

            <p>Devopsbuddy has encountered an error. Please contact support
                by clicking <a th:href="@{/contact}">here.</a></p>

            <p>Support may ask you to right click to view page source.</p>

            <!--
              // Hidden Exception Details  - this is not a recommendation, but here is
              // how you hide an exception in the page using Thymeleaf
              -->
            <div th:utext="'&lt;!--'" th:remove="tag"></div>
            <div th:utext="'Failed URL: ' +  ${url}" th:remove="tag">${url}</div>
            <div th:utext="'Exception: ' + ${exception.message}" th:remove="tag">${exception.message}</div>
            <ul th:remove="tag">
                <li th:each="ste : ${exception.stackTrace}" th:remove="tag"><span
                        th:utext="${ste}" th:remove="tag">${ste}</span></li>
            </ul>
            <div th:utext="'--&gt;'" th:remove="tag"></div>

        </div>

    </div>

</body>
</html>

但是当我试图上传一个大于10mb的文件时
我看不到错误页,但是:

w8f9ii69

w8f9ii691#

您的返回变量是一个字符串,您希望返回一个视图,如下所示(假设错误是template name):

@RequestMapping(PATH)
    @ResponseBody
    public ModelAndView getErrorPath() {
            return new ModelAndView("Error");
    }
o4hqfura

o4hqfura2#

返回的错误页必须正确Map:
一种方法是通过spring boot application.properties文件:

spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp (or) html

样品控制器:

@GetMapping(value = "login")
public String getLoginPage() {
    return "dummyPage";
}
jchrr9hc

jchrr9hc3#

请,把钥匙拿开 @ResponseBody 注解,该注解指示返回的对象应自动序列化为json并传递回提供给客户机的响应。
您的代码应该如下所示:

@RequestMapping(PATH)
public String getErrorPath() {
  return "error/genericError";
}

其中,如@justanotherdeveloper所示, error/genericError 匹配位于适当文件夹中的有效文件(html、jsp等),在您的情况下,匹配自定义错误页。

相关问题