gpt4 book ai didi

java - 使用 JSP 解析器时未拾取 Spring Boot 1.4 中的自定义错误页面

转载 作者:行者123 更新时间:2023-12-01 09:09:22 27 4
gpt4 key购买 nike

我正在尝试在 Spring Boot 1.4 应用程序中使用我自己的自定义错误页面。根据文档,将我的错误页面放在 src/main/resources/public/error 目录中应该足够了(例如 404.html)。

但是,我也在我的应用程序中使用 JSP 页面并为它们提供了解析器:

@Override
public void configureViewResolvers(final ViewResolverRegistry registry) {
final UrlBasedViewResolverRegistration resolver = registry.jsp("/WEB-INF/jsp/", ".jsp");

final Map<String, Object> attributes = new HashMap<>();
attributes.put("HASH", hashReader.getHashValue());
attributes.put("Hoker", hookerReader.getHooker());
resolver.attributes(attributes);
}

每当我遇到 4xx 错误时,它不会使用我放入 resources/public/error 目录中的自定义错误页面,而是尝试加载 /WEB-INF/jsp/error.jsp.

有没有办法强制 Spring Boot 使用其默认行为,而不是尝试将错误页面解析到 JSP 目录?

最佳答案

这是一个示例,https://github.com/lenicliu/eg-spring/tree/master/eg-spring-boot/eg-spring-boot-webmvc

我想你可以这样修复它:

package com.lenicliu.spring.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.web.servlet.ErrorPage;
import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpStatus;

@SpringBootApplication
public class Application {

@Bean
public EmbeddedServletContainerCustomizer customizeContainerr() {
return new CustomizedContainer();
}

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

private static class CustomizedContainer implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));
container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html"));
}
}
}

您可以将 404.html 和 500.html 放入以下文件夹中:

src/main/resource/static/500.html
src/main/resource/static/404.html

像这样:

container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/404.html"));
container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/error/500.html"));

然后将它们放入

src/main/resource/static/error/500.html
src/main/resource/static/error/404.html

引用http://docs.spring.io/spring-boot/docs/1.4.2.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-static-content

/static 或/public 或/resources 或/META-INF/resources,它们是相同的。

希望能帮到你:)

关于java - 使用 JSP 解析器时未拾取 Spring Boot 1.4 中的自定义错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41015456/

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