使用Spring MVC和Thymeleaf更新视图而无需重新部署应用程序

时间:2014-08-10 10:18:45

标签: spring tomcat spring-mvc thymeleaf

我正在使用Spring MVC 3.2,Thymeleaf,Thymeleaf方言和Tomcat,每当我更改视图时,我都不想重新部署我的应用程序。正如其他人所建议的那样:

<property name="cacheable" value="false"/> 

在模板解析器中,但它不起作用。 完全重载(CTRL + F5)也没有效果。

这是我完整的Thymeleaf配置:

<!-- Thymeleaf template engine -->
<bean id="templateResolver"
      class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <property name="prefix" value="/WEB-INF/templates/" />
    <property name="suffix" value=".html" />
    <property name="templateMode" value="HTML5" />
    <property name="cacheable" value="false"/>
</bean>

<bean id="templateEngine"
      class="org.thymeleaf.spring3.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver" />
    <!-- These lines add the dialect to Thymeleaf -->
    <property name="additionalDialects">
        <set>
            <bean class="nz.net.ultraq.thymeleaf.LayoutDialect"/>
        </set>
    </property>
</bean>

<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine" />
</bean> 

我还能采取其他措施来解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

这取决于许多事情,主要取决于您在何处以及如何更新视图。如果您使用的是IDE(Netbeans或Eclipse),它主要取决于IDE本身和部署过程。

磁盘上的当前组织:

  

源目录=&gt; [on build] =&gt;目标或构建目录=&gt; [on deploy] =&gt; tomcat目录

但IDE经常试图使开发人员友好,并且可能发生目标目录和tomcat目录是相同的。但它也可能取决于IDE及其配置。 此外,当您在源webapp下保存文件时,IDE 可能会自动将它们复制到目标。

但Thymeleaf配置的<property name="cacheable" value="false"/>无法保证这一点。所有它保证的是,如果在tomcat目录中更改模板,下一个请求将使用它。

因此,为了确定问题的确切位置,您必须找到tomcat实际获取模板的位置以及这些模板是否已修改。

(我甚至没有谈过浏览器缓存......)

答案 1 :(得分:0)

在Tomcat&#34;服务器选项&#34;中,选中&#34;服务模块而不发布&#34;为我做了诀窍。