2016-09-08 4 views
0

Ich arbeite mit Eclipse in einem Projekt, das mit Tomcat 8 läuft. Ich benutze Spring MVC + Thymeleaf. Ich habe das War-Plugin in Gradle, und jedes Mal, wenn ich eine Java-Klasse ändere, erstellt es automatisch die neue WAR-Datei und stellt sie in Tomcat bereit.Need Neustart Tomcat für HTML-Änderungen

Das Problem ist, dass, wenn ich eine HTML-Datei ändern, ich tomcat neu starten muss, um die Änderungen zu sehen. Etwas, das nicht mit einem anderen Projekt mit JSF passiert. Wenn ich ein xhtml ändere, kann ich sehen, dass das neue Material nur den Browser aktualisiert.

Die Frage ist, muss ich Tomcat jedes Mal neu starten, wenn ich eine HTML- oder CSS-Datei ändere? Für mich ergibt das keinen Sinn.

+0

Können Sie herausfinden, wie HTML-Dateien in einem Projekt platziert werden? HTML-Dateien können durch verschiedene Ansätze als Ressourcen verwaltet werden und möglicherweise die Ursache des Problems sein. – sphinks

+0

@sphinks meine HTML-Dateien sind unter WebContent/WEB-INF/Templates platziert. – angeldev

Antwort

0

Das Problem war Thymeleaf-Cache. Sie können es in der Konfiguration mit setCacheable deaktivieren. Dies gilt sowohl für Thymeleaf 3+:

@Bean 
public ViewResolver viewResolver() { 
    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); 
    viewResolver.setTemplateEngine(templateEngine()); 
    viewResolver.setCharacterEncoding(UTF8); 
    return viewResolver; 
} 

private TemplateEngine templateEngine() { 
    SpringTemplateEngine engine = new SpringTemplateEngine(); 
    engine.setEnableSpringELCompiler(true); 
    engine.setTemplateResolver(templateResolver()); 
    return engine; 
} 

private ITemplateResolver templateResolver() { 
    SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); 
    resolver.setApplicationContext(applicationContext); 
    resolver.setPrefix("/WEB-INF/templates/"); 
    resolver.setSuffix(".html"); 
    resolver.setTemplateMode(TemplateMode.HTML); 
    resolver.setCharacterEncoding("UTF-8"); 
    resolver.setCacheable(false); 
    return resolver; 
} 

ich dies in einem Frühjahr-Boot-Thread in diesen answer gefunden.

2

Sie müssen cacheble deaktivieren, wenn Sie die Template-Engine konfigurieren

<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"> 
    ... 
    <property name="cacheable" value="false"/> 
</bean> 

Lassen Sie mich wissen, ob dies für Sie

+0

Ja! Das Problem war Thymeleaf Cache, ich habe Java-Konfiguration. Ich habe es gepostet! Vielen Dank! – angeldev

+0

Froh, dass es für Sie funktioniert hat! –

0

exploded war Versuchen gearbeitet. Wenn Sie .war Datei verwenden, müssen Sie für jede Änderung neu bereitstellen (wie ich weiß).