Je rencontre des problèmes lors de l'échange/mise à jour à chaud de mes modèles Thymeleaf à l'aide d'Intellij. En ce moment, je dois faire un redémarrage complet du serveur pour voir mes changements, ce qui est plutôt fastidieux et ralentit mon flux de travail. J'utilise Gradle, Intellij 14.1 et Tomcat 8. J'utilise l'application en mode Debug.Thymeleaf Not Hot Swapping Intellij
J'ai essayé de paramétrer Thymeleaf pour qu'il ne puisse pas être mis en cache.
@Configuration
public class ThymeleafConfig {
@Autowired
Environment environment;
@Bean
public ServletContextTemplateResolver templateResolver() {
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix(environment.getRequiredProperty("thymeleaf.resolver.prefix"));
resolver.setSuffix(environment.getRequiredProperty("thymeleaf.resolver.suffix"));
resolver.setTemplateMode(environment.getRequiredProperty("thymeleaf.resolver.templatemode"));
resolver.setOrder(environment.getRequiredProperty("thymeleaf.resolver.order", Integer.class));
resolver.setCacheable(environment.getRequiredProperty("thymeleaf.resolver.cacheable", Boolean.class));
resolver.setCharacterEncoding(environment.getRequiredProperty("thymeleaf.resolver.character.encoding"));
return resolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolver(templateResolver());
engine.addDialect(new LayoutDialect());
engine.addDialect(new SpringSecurityDialect());
return engine;
}
@Bean
public ThymeleafViewResolver thymeleafViewResolver() {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
return resolver;
}
}
Le fichier de propriétés du code ci-dessus est lu à partir de. J'ai également essayé de le définir dans ApplicationInitializer.
@Override
public void onStartup(ServletContext container) throws ServletException {
/**
* If no active profile is set via -Dspring.profiles.active then the application
* will default to development mode
*/
container.setInitParameter("spring.profiles.default", "dev");
/**
* Set thymeleaf cache to false if -Dspring.thymeleaf.cache is not passed
*/
container.setInitParameter("spring.thymeleaf.cache", "false");
/**
* create the root Spring application context
*/
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.setDisplayName("app");
rootContext.register(AppConfig.class);
/**
* manage the lifecycle of the root application context
*/
container.addListener(new ContextLoaderListener(rootContext));
/**
* register and map the dispatcher servlet
*/
ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(rootContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
Jusqu'à présent, rien de tout cela n'a fonctionné.
OUI !!!!!! Ça a marché. Je déployais la guerre sans qu'elle ne soit explosée. – jkratz55
L'avez-vous fait fonctionner sous Windows? Chose amusante mais ça ne marche pas pour moi maintenant sur Windows (c'est sur Mac). – SirKometa
aussi cela pourrait aider: http://stackoverflow.com/questions/21399586/hot-swapping-in-spring-boot/43114954#43114954 – shabby