X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fthymeproxy%2FApplication.java;h=2adafb2ab14ce5f459ad5cbfeeaca6fcc2b949c3;hb=2e1827336be89956cf176b047ebbfa4f30c51b32;hp=dcc35f8c3a87bf2fcf88a599b0c76a6a178937a1;hpb=f41186aa11b4f4d4ada5310682aee7c75c252144;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 dcc35f8..2adafb2 100644 --- a/src/main/java/de/juplo/thymeproxy/Application.java +++ b/src/main/java/de/juplo/thymeproxy/Application.java @@ -1,21 +1,27 @@ package de.juplo.thymeproxy; +import de.juplo.thymeleaf.JuploDialect; import java.util.HashMap; import java.util.Map; import org.apache.http.impl.client.CloseableHttpClient; +import org.springframework.beans.BeanUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.core.Ordered; import org.springframework.core.env.Environment; +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 +public class Application extends WebMvcConfigurerAdapter { @Bean public RegexUrlHandlerMapping proxiedHandlerMapping( @@ -27,10 +33,11 @@ public class Application 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); mappings.put("/fonts/.+", proxy); - mappings.put(".*\\.html", views); + mappings.put("/.*\\.html", views); mapping.setUrlMap(mappings); return mapping; } @@ -62,7 +69,7 @@ public class Application { TemplateResolver resolver = new TemplateResolver(); resolver.setResourceResolver(resources); - resolver.setPrefix("//thymeleaf/"); + resolver.setPrefix("http://localhost:8080/thymeleaf/"); resolver.setSuffix(".html"); resolver.setTemplateMode("HTML5"); resolver.setCharacterEncoding("UTF-8"); @@ -70,12 +77,48 @@ public class Application return resolver; } + @Bean + public TemplateResolver jsonTemplateResolver( + IResourceResolver resources, + Environment env + ) + { + TemplateResolver resolver = new TemplateResolver(); + resolver.setResourceResolver(resources); + resolver.setPrefix("http://localhost:8080/thymeleaf/"); + resolver.setSuffix(".json"); + resolver.setTemplateMode("JSON"); + resolver.setCharacterEncoding("UTF-8"); + resolver.setCacheable(Boolean.valueOf(env.getProperty("thymeproxy.cacheable"))); + return resolver; + } + @Bean public UrlResourceResolver thymeleafResourceResolver() { return new UrlResourceResolver(); } + @Bean + public JuploDialect juploDialect() + { + return new JuploDialect(); + } + + @Bean + public ThymeleafView error() + { + ThymeleafView view = BeanUtils.instantiateClass(ThymeleafView.class); + view.setTemplateName("/thymeleaf/error.html"); + return view; + } + + @Override + public void addViewControllers(ViewControllerRegistry registry) + { + registry.addViewController("/").setViewName("forward:index.html"); + } + public static void main(String[] args) {