Freemarker" has_content"内置导致意外错误

时间:2016-12-06 21:35:56

标签: java freemarker

我尝试使用has_content来检查map属性是否为非空,然后再将其作为布尔值进行测试,因为数据模型(出于痛苦和乏味的原因)有时会填充带有空字符串而不是布尔值的字段。

然而,当我尝试

<#if (mecflag?has_content && mecflag)>

(意思是,我认为,&#34;如果变量不为空,如果它是布尔true),我会收到错误。该错误表明Freemarker并不喜欢has_content不是骆驼案例标识符的事实。这看起来很奇怪。

我使用的是我认为目前稳定的Freemarker,2.3.25。

错误文字:

  

命名约定不匹配。作为模板语言一部分的标识符(不是用户指定的标识符)必须在同一模板中始终使用相同的命名约定。此模板使用驼峰大小写命名约定(如:exampleName),通过第37行自动检测,第121列由标记&#34; upperCase&#34;建立,但有问题的标记&#34; has_content&#34;,使用不同的惯例。

1 个答案:

答案 0 :(得分:0)

好吧,没多久。

显然,Freemarker可以使用 驼峰式或“_”版本的内置名称。因此,?hasContent?has_content一样有效。文档有点不一致。

因此:如果您收到“命名约定不匹配”错误,请检查您在模板文件中使用?built_inbuiltIn并选择其中一个。