All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfigurationAfter Maven / Gradle / Ivy

package org.springframework.boot.autoconfigure.web;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import javax.servlet.Servlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ErrorPage;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.ModelAndView;

@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class })
@AutoConfigureAfter(ErrorMvcAutoConfiguration.class)
@ConfigurationProperties(prefix = "spring.error")
public class ErrorMvcAutoConfigurationAfter {
  private List errorPages = new ArrayList();
  private final ServerProperties serverProperties;

  private final List errorViewResolvers;

  public ErrorMvcAutoConfigurationAfter(ServerProperties serverProperties, ObjectProvider> errorViewResolversProvider) {
    this.serverProperties = serverProperties;
    this.errorViewResolvers = errorViewResolversProvider.getIfAvailable();
  }

  @Bean
  public BasicErrorController basicErrorController(ErrorAttributes errorAttributes) {
    return new BasicErrorController(errorAttributes, this.serverProperties.getError(), this.errorViewResolvers) {
      @Override
      @RequestMapping(produces = "text/html")
      public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {
        Map model = Collections.unmodifiableMap(getErrorAttributes(request, isIncludeStackTrace(request, MediaType.TEXT_HTML)));
        HttpStatus status = getStatus(request);
        response.setStatus(status.value());
        ModelAndView modelAndView = resolveErrorView(request, response, status, model);
        return (modelAndView == null ? new ModelAndView("error", model) : modelAndView);
      }
    };
  }

  @Bean
  public DefaultErrorAttributes errorAttributes(MessageSource messageSource) {
    return new DefaultErrorAttributesCustom(messageSource);
  }

  public List getErrorPages() {
    return errorPages;
  }

  public void setErrorPages(List errorPages) {
    this.errorPages = errorPages;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy