【问题标题】:Representation of nulls in Freemarker with Spring Framework使用 Spring 框架在 Freemarker 中表示空值
【发布时间】:2012-02-17 12:24:21
【问题描述】:

我正在开发一个基于 Spring Framerwork 的应用程序。作为一种视图技术,我使用与 Freemarker 框架集成。当存储可视化数据的 java bean 在某些字段中为空时,就会出现问题。 Freemarker 中没有 null 的概念,所以它认为 bean 中根本没有这些字段。我想问题可以通过自定义类来解决,该类将数据从java bean复制到模板中引用的freemarker的哈希对象。但是我还没有找到 Spring 中的哪个类。有没有这样的类,怎么称呼?

【问题讨论】:

    标签: spring freemarker


    【解决方案1】:

    通常你只是直接在模板中处理空值。例如:

    ${person.surname!"n/a"}
    

    如果姓氏为空,将打印“n/a”,或者只是:

    ${person.surname!}
    

    如果姓氏为空,它将打印出空字符串(无)。

    【讨论】:

    • 这样我需要添加“!”在每个领域之后。恕我直言,如果有一段代码可以让我免于这些烦人的“表达式未定义”错误,那会更方便。
    • 您只将! 放在真正可以是null(或缺失)的字段之后,而不是在所有字段之后。否则你可以隐藏错别字。此外,在字段可以是null 的情况下,简单地不打印任何内容通常是不合适的,因此您必须明确说明接下来要做什么。打印N/A-,或者假设字段为0(在计算中),或者跳过打印字段标签等
    • 在大多数情况下,我可以在 Freemarker 的此类字段中没有任何内容(例如零长度字符串)。如果我需要用其他东西替换它,我会在 freemarker 模板中检查一个带有 has_content 的字段,并在那里放置一个适当的值。如果我不想在 freemarker 的此类字段中使用零长度字符串,我将使用一些自定义注释(例如 @Nullable)注释 Java bean 中的相应字段,并在将数据从 Java bean 复制到freemarker 的哈希值。
    【解决方案2】:

    您可以使用“!”操作员。这是一个例子:

    ${your_property!""}
    

    如果your_property 为空,它将打印空字符串“”。

    【讨论】:

      【解决方案3】:

      如果您的属性链中的任何部分都可以为空,您还可以在它周围加上括号以防止任何部分为空。例如。如果你喜欢

      ${person.car.door.color!"<no value"}
      

      你只需要防止颜色为空。但如果门、车或整个人也可能丢失,你必须放

      ${(person.car.door.color)!"<no value"}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-11
        • 2017-02-01
        • 2012-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-14
        • 2012-11-02
        相关资源
        最近更新 更多