spring整合freemaker 定义宏 参数必填问题

在spring 整合freemaker中,freemaker定义了宏,宏中所有的参数默认均为必填项。


在普通的html或ftl中调用宏时,如果参数未给默认值,会报出如下错误。

When calling macro "****", required parameter "param2" (parameter #2) was not specified.

经查阅相关资料。得解决方案如下:

在配置文件中加入下面一则属性

              	<prop key="classic_compatible">true</prop>
具体位置见下列详细代码:
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath">
            <value>/layuiadmin/src/views/</value>
        </property>
        <property name="freemarkerSettings"><!-- 设置FreeMarker环境属性 -->
            <props>
              	<prop key="classic_compatible">true</prop>
                <prop key="template_update_delay">5</prop><!--刷新模板的周期,单位为秒 -->
                <prop key="default_encoding">UTF-8</prop><!--模板的编码格式 -->
                <prop key="locale">UTF-8</prop><!-- 本地化设置 -->
                <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
                <prop key="time_format">HH:mm:ss</prop>
                <prop key="number_format">0.####</prop>
                <prop key="boolean_format">true,false</prop>
                <prop key="whitespace_stripping">true</prop>
                <prop key="tag_syntax">auto_detect</prop>
                <prop key="url_escaping_charset">UTF-8</prop>
            </props>
        </property>
    </bean>

问题得以解决。

额外问题:

在解决以上问题后,在ftl引用封装宏文件时,抛出fileNotFoundException。

<#import "../common/macro/standardList.ftl" as std />

加减此句xml配置,分别调试读freemaker源码,发现不加xml配置时,引用文件目录会自动添加一层/xxxx/../common,

而加此配置,则直接为../common/,freemaker遇到 startWith("../")则直接返回null。

于是在import时,更改为如下引入即可

<#import "/common/macro/standardList.ftl" as std />
/ 即为配置目录路径根目录
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值