freemarker 宏定义 的not specified

发布于 2021-11-13 09:34:26 字数 1194 浏览 756 评论 8

因为页面有几个重复的判断图片的显示路径。所以自己定义了一段宏定义:

<#macro judgeImage info image="images/N_n2pic.gif">
<#if info?exists >
<dt><a href="/info/detail.do?id=${info.id}"><img src="${info.image?default('images/N_n2pic.gif')}" width="95" height="85"/></a></dt>
<#else>
<dt><img src="${image}" width="95" height="85"/></dt>
</#if>
</#macro>

引用:

<dl class="clear">

<@judgeImage zuixinloupandata/>

</dl>

运行结果报错:

==> macro judgeImage [on line 3, column 1 in content_one.ftl]
 in user-directive judgeImage [on line 121, column 11 in content_one.ftl]
 in include "content_one.ftl" [on line 28, column 1 in index.ftl]
----------

Java backtrace for programmers:
----------
freemarker.template.TemplateException: Error executing macro: judgeImage
required parameter: info is not specified.

说宏定义的第三行的info未定义。

宏定义的info只是传的一个参数而已, 会判断它是否为空?

引用的地方有几个。前面几个没问题, 是因为里面有数据, 结果运行到

<@judgeImage zuixinloupandata/>就异常。 后面的有些是没数据的, 但MAP里面存放了key,只是value为null而已。

求解。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

恋你朝朝暮暮 2021-11-16 04:51:19

引用来自“张宋付”的帖子

其实你想在调用是空的话,直接用info?has_content 就可以了。

贱贱哒 2021-11-16 04:47:32

其实你想在调用是空的话,直接用info?has_content 就可以了。

情场扛把子 2021-11-16 03:41:22

哈哈, 结贴。

长安忆 2021-11-16 01:23:10

<#macro judgeImage info image="images/N_n2pic.gif">
<#if info?exists >
<dt><a href="/info/detail.do?id=${info.id}"><img src="${info.image?default('images/N_n2pic.gif')}" width="95" height="85"/></a></dt>
<#else>
<dt><img src="${image}" width="95" height="85"/></dt>
</#if>
</#macro>

今天早上仔细看了下, 也顺便查了下freemarker指令

原来info?exists只判断变量是否存不存在而不管是否为空。

map里面有这个变量。 所以这里的结果是true。因此执行到下一步获取info的属性值, 结果就报未定义错误。

<#if info?exists && info?has_content>改成这样即可。

info?has_content判断该变量是否不为null并且不为empty

一笔一画续写前缘 2021-11-15 23:17:32

zuixinloupandata是单个对象。

还是不行哦。

始终过不了<#macro judgeImage info image="images/N_n2pic.gif">这里的info

像你 2021-11-15 17:20:15

那就说明你的 info 是要求一个对象,而不是字符串,你应该给 info传递一个变量

<@judgeImage info=zuixinloupandata/>

不知道你的 zuixinloupandata 是个什么东西。

孤檠 2021-11-14 09:46:00

引用来自“红薯”的帖子

应该是这样引用宏:<@judgeImage info="zuixinloupandata"/>

等你爱我 2021-11-14 08:20:36

应该是这样引用宏:<@judgeImage info="zuixinloupandata"/>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文