X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fthymeproxy%2FApplication.java;h=6b0ad09edf6a5a75287a01b99fbf94d57af86195;hb=47ba6f9913adb987a0fda0e25e101ae34297d725;hp=ff5174a15dd06beac7f6905164af1916cfd7bece;hpb=ca2da8b36b6cf13c5b885ff7e74bc22d3576f6c7;p=maven-thymeleaf-skin diff --git a/src/main/java/de/juplo/thymeproxy/Application.java b/src/main/java/de/juplo/thymeproxy/Application.java index ff5174a..6b0ad09 100644 --- a/src/main/java/de/juplo/thymeproxy/Application.java +++ b/src/main/java/de/juplo/thymeproxy/Application.java @@ -2,23 +2,25 @@ package de.juplo.thymeproxy; import de.juplo.thymeleaf.JuploDialect; import java.util.HashMap; -import java.util.Locale; import java.util.Map; +import java.util.Properties; import org.apache.http.impl.client.CloseableHttpClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.web.ErrorAttributes; +import org.springframework.boot.autoconfigure.web.ErrorController; import org.springframework.boot.autoconfigure.web.ServerProperties; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.core.Ordered; import org.springframework.core.env.Environment; -import org.springframework.web.servlet.View; 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.springframework.web.servlet.handler.SimpleMappingExceptionResolver; +import org.thymeleaf.TemplateEngine; import org.thymeleaf.resourceresolver.IResourceResolver; import org.thymeleaf.resourceresolver.UrlResourceResolver; -import org.thymeleaf.spring4.view.ThymeleafViewResolver; import org.thymeleaf.templateresolver.TemplateResolver; @@ -32,13 +34,12 @@ public class Application extends WebMvcConfigurerAdapter @Bean public RegexUrlHandlerMapping proxiedHandlerMapping( ProxyHttpRequestHandler proxy, - UrlFilenameViewController views + UrlThymeleafViewController views ) { RegexUrlHandlerMapping mapping = new RegexUrlHandlerMapping(); mapping.setOrder(Ordered.HIGHEST_PRECEDENCE); Map mappings = new HashMap<>(); - mappings.put("/thymeleaf/.*\\.html", proxy); mappings.put("/img/.+", proxy); mappings.put("/css/.+", proxy); mappings.put("/js/.+", proxy); @@ -62,9 +63,11 @@ public class Application extends WebMvcConfigurerAdapter } @Bean - public UrlFilenameViewController urlFilenameViewController() + public UrlThymeleafViewController urlThymeleafViewController( + TemplateEngine engine + ) { - return new UrlFilenameViewController(); + return new UrlThymeleafViewController(engine); } @Bean @@ -112,9 +115,31 @@ public class Application extends WebMvcConfigurerAdapter } @Bean - public View error(ThymeleafViewResolver resolver) throws Exception + public SimpleMappingExceptionResolver simpleMappingExceptionResolver() + { + SimpleMappingExceptionResolver resolver = + new SimpleMappingExceptionResolver(); + + Properties mappings = new Properties(); + mappings.setProperty("TemplateInputException", "templates/404"); + + resolver.setExceptionMappings(mappings); + resolver.setDefaultErrorView("templates/500"); + resolver.setWarnLogCategory("exception"); + return resolver; + } + + @Bean + public ErrorController errorController( + ApplicationContext context, + ErrorAttributes errorAttributes + ) { - return resolver.resolveViewName("templates/error", Locale.getDefault()); + return new ExceptionResolverErrorController( + context, + errorAttributes, + properties.getError() + ); }