2015-04-14 2 views
0

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é.

Répondre

1

Sélectionnez la guerre éclatée pour le déploiement. Ensuite, vous pouvez simplement mettre à jour des ressources ou des classes et des ressources lorsque vous cliquez sur CMD + F10 (je suppose qu'il peut s'agir de CTRL sous Windows/Linux).

+0

OUI !!!!!! Ça a marché. Je déployais la guerre sans qu'elle ne soit explosée. – jkratz55

+0

L'avez-vous fait fonctionner sous Windows? Chose amusante mais ça ne marche pas pour moi maintenant sur Windows (c'est sur Mac). – SirKometa

+0

aussi cela pourrait aider: http://stackoverflow.com/questions/21399586/hot-swapping-in-spring-boot/43114954#43114954 – shabby