首先说说freemarker热更新的问题。网上很多博客写的freemarker配置热更新用的属性文件配置

template_update_delay=0

,但我是写在xml里的,不知道这个应该配置在xml里的哪个地方。无赖之下只有翻看freemarker文档。

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/views/"/>
    <property name="freemarkerSettings">
        <props>
            <prop key="template_update_delay">0</prop>
            <prop key="locale">zh_CN</prop>
            <prop key="url_escaping_charset">UTF-8</prop>
            <!--<prop key="incompatible_improvements">2.3.23</prop>-->
            <!--<prop key="template_exception_handler">rethrow</prop>-->
            <prop key="default_encoding">UTF-8</prop>
        </props>
    </property>
</bean>

测试一把。发现不行,好吧。继续看文档。

"template_update_delay": Template update delay in seconds (not in milliseconds) if no unit is specified; see setTemplateUpdateDelayMilliseconds(long) for more. 
String value: Valid positive integer, optionally followed by a time unit (recommended). The default unit is seconds. It's strongly recommended to specify the unit for clarity, like in "500 ms" or "30 s". Supported units are: "s" (seconds), "ms" (milliseconds), "m" (minutes), "h" (hours). The whitespace between the unit and the number is optional. Units are only supported since 2.3.23.

“template_update_delay”:如果未指定单位,模板更新延迟(以秒为单位,而不是毫秒); 请参阅setTemplateUpdateDelayMilliseconds(long)了解更多。

字符串值:有效的正整数,可选后跟一个时间单位(推荐)。 默认单位为秒。 强烈建议指定单位以便清楚,例如“500 ms”或“30 s”。 支持的单位有:“s”(秒),“ms”(毫秒),“m”(分钟),“h”(小时)。 单位和数字之间的空格是可选的。 从2.3.23开始支持单位。

英文不佳,用软件一点点翻译的。

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/views/"/>
    <property name="freemarkerSettings">
        <props>
            <prop key="template_update_delay">1ms</prop>
            <prop key="locale">zh_CN</prop>
            <prop key="url_escaping_charset">UTF-8</prop>
            <!--<prop key="incompatible_improvements">2.3.23</prop>-->
            <!--<prop key="template_exception_handler">rethrow</prop>-->
            <prop key="default_encoding">UTF-8</prop>
        </props>
    </property>
</bean>

文档写的从2.3.23支持单位了。我就写成1ms。再次测试。发现在还是不成功。挫败啊。

对着电脑屏幕看了半天,突然好想明白了点什么。在idea生成的target目录下找到ftl模板。修改一下。刷新页面,成功了。之前一只都是修改的源文件,而不是tomcat上的ftl。唉,折腾了半天。记下来,希望自己以后不要在犯这样的错误。