需要重启tomcat以进行html更改

时间:2016-09-08 15:12:56

标签: java spring-mvc gradle thymeleaf tomcat8

我正在使用tomcat 8运行的项目中使用eclipse。我正在使用Spring MVC + Thymeleaf。我在Gradle中有war插件,因此每次更改java类时,它都会自动创建新的WAR文件并将其部署在tomcat中。

问题是当我更改HTML文件时,我必须重新启动tomcat才能看到更改。使用JSF的另一个项目不会发生的事情,如果我更改了一个xhtml,我可以看到新的东西只是刷新浏览器。

问题是,每次更改HTML或CSS文件时是否必须重新启动Tomcat?这对我没有意义。

3 个答案:

答案 0 :(得分:2)

配置模板引擎时需要禁用缓存

Task::Task(gdt *GlobalDescriptorTable, void entrypoint())
{
 /*Stuff Happenes Here.. But i Minimized it*/
}

请告诉我这是否适合您

答案 1 :(得分:0)

试试exploded war。如果您使用.war文件,则需要重新部署每个更改(据我所知)。

答案 2 :(得分:0)

问题是Thymeleaf缓存。您可以使用setCacheable在配置中禁用它。这适用于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;
}

我在Spring引导线程中的answer中找到了这个。