当前位置: 首页 > 面试题库 >

freemarkers跳过assertNonNull InvalidReferenceException

闽涵蓄
2023-03-14
问题内容

我用freemarker渲染对象列表:

<ul>
    <#list publication as item>
        <li><b>${item.key}</b> : ${item.value}</li>
    </#list>
</ul>

但是某些项目具有item.value null会引发异常:

freemarker.core.InvalidReferenceException: Expression item.value is undefined on line 12, column 44 in mailTemplate.
    at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
    at freemarker.core.Expression.getStringValue(Expression.java:118)

我希望该freemarker呈现“ null”或不显示任何内容,并继续发送邮件,而不是对此进行阻止

我总是可以先检查列表,然后再将其发送到freemarker,但是如果我可以避免此步骤,那就更好了


问题答案:

您应该在模板中检查该值是否丢失,然后打印对接收者有意义的内容(“ null”对于接收者当然没有意义)。像,如果项目不需要任何值,则为N / A:

<li><b>${item.key}</b> : ${item.value!'N/A'}</li>

或如果由于记录仍不完整而缺少该值,则跳过整行:

<#if item.value??>
  <li><b>${item.key}</b> : ${item.value}</li>
</#if>


 类似资料:
  • 本文向大家介绍C#跳过而,包括了C#跳过而的使用技巧和注意事项,需要的朋友参考一下 示例 SkipWhile() 用于排除元素,直到第一个不匹配为止(这对大多数人来说可能很直观)            

  • 我正在使用Maven 2.2.1,为了构建我的项目,我使用了以下命令 但是,构建失败了,说它找不到一个工件。然而,当我使用: 一切正常。 到目前为止,我一直认为这两个命令是等效的。然而,这个链接似乎表明,Dmaven。测验skip=true也会跳过编译测试用例。 然而,这仍然不能向我解释为什么一个命令有效,而另一个命令无效。如果有人能向我解释这一点,我将不胜感激。

  • 今天在运行我的应用程序时,我在logcat上看到这样一条消息:“跳过了33帧。应用程序可能在其主线程中做了太多的工作。”。第二部分与我无关,因为当显示此消息时,我的应用程序确实在运行。但同时它说“跳过了33帧”。。这是否意味着屏幕视图会像视频一样逐帧显示。!!!

  • 我正在寻找一种方法来跳过多构建项目中某个项目的测试。我不想使用gradle构建-x测试,因为这样它将跳过所有子项目的测试。 根 子P1 build.gradle 构建。格拉德尔 构建。格拉德尔 我只想跳过“Sub P3”的测试 我可以将项目(子P3)生成文件配置为跳过测试吗?

  • 读取文件已支持 windows 系统,版本号大于等于 1.3.4.1; 扩展版本大于等于 1.2.7; PECL 安装时将会提示是否开启读取功能,请键入 yes; 测试数据准备 $config = ['path' => './tests']; $excel = new \Vtiful\Kernel\Excel($config); ​ // 写入测试数据 $filePath = $excel->f

  • 问题内容: 我正在使用以下内容读取文件的各行, 现在,我想跳过读取文件的第一行,并且不想使用计数器行来保持行数。 这该怎么做? 问题答案: 你可以试试这个