import de.juplo.thymeleaf.JuploDialect;
import java.util.HashMap;
import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.apache.http.impl.client.CloseableHttpClient;
-import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.web.BasicErrorController;
+import org.springframework.boot.autoconfigure.web.ErrorAttributes;
+import org.springframework.boot.autoconfigure.web.ErrorController;
+import org.springframework.boot.autoconfigure.web.ErrorProperties;
+import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.core.Ordered;
import org.springframework.core.env.Environment;
+import org.springframework.http.MediaType;
+import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.mvc.UrlFilenameViewController;
import org.thymeleaf.resourceresolver.IResourceResolver;
import org.thymeleaf.resourceresolver.UrlResourceResolver;
-import org.thymeleaf.spring4.view.ThymeleafView;
-import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.TemplateResolver;
@SpringBootApplication
public class Application extends WebMvcConfigurerAdapter
{
+ @Autowired
+ private ServerProperties properties;
+
+
@Bean
public RegexUrlHandlerMapping proxiedHandlerMapping(
ProxyHttpRequestHandler proxy,
}
@Bean
- public ThymeleafView error()
+ public ErrorController errorController(ErrorAttributes errorAttributes)
{
- ThymeleafView view = BeanUtils.instantiateClass(ThymeleafView.class);
- view.setTemplateName("/thymeleaf/error.html");
- return view;
+ return new CustomErrorController(errorAttributes, properties.getError());
}
+
@Override
public void addViewControllers(ViewControllerRegistry registry)
{
{
SpringApplication.run(Application.class, args);
}
+
+
+ static class CustomErrorController extends BasicErrorController
+ {
+ CustomErrorController(
+ ErrorAttributes errorAttributes,
+ ErrorProperties errorProperties
+ )
+ {
+ super(errorAttributes, errorProperties);
+ }
+
+
+ @Override
+ public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response)
+ {
+ response.setStatus(getStatus(request).value());
+ Map<String, Object> model =
+ getErrorAttributes(
+ request,
+ isIncludeStackTrace(request, MediaType.TEXT_HTML)
+ );
+ return new ModelAndView("templates/error", model);
+ }
+ }
}
\ No newline at end of file