4

在 Play 1.x 中,您可以执行诸如&{task?.server?.name}打印服务器名称(如果存在)或不打印任何内容(如果tasktask.server为空)之类的操作。如何在 2.x scala 模板中获得相同的结果?

我发现了一些关于使用 Scala 执行此操作的问题:

但这些解决方案要么相当冗长,要么需要定义您自己的运算符。Play 是否提供了一种快速的方法来做到这一点?或者如果我需要自己定义运算符,我应该把它放在哪里以便 Play 找到它?(此时我对 Scala 几乎一无所知,尽管我正在努力学习)

4

1 回答 1

0

这里已经有许多与 null 处理相关的问题和答案,所以我将只专注于您的 Play-2 相关问题。

我做了一个快速测试,似乎模板系统将空值的直接取消引用转换为空字符串。如果您尝试在作为 null 传入的对象上调用某些方法,这仍然无法将您从 NPE 中拯救出来。为此,您需要使用所有其他答案中描述的一些方法。如果你定义了一个新的操作符,你可以把它放在你喜欢的任何包中,然后将这一行添加到你的模板中:

@import some.package._

这将使 some.package 中的所有内容都可以在模板中访问。

通常的良好做法警告仍然适用:尝试仅在与 java 的互操作中使用空值。对于其他一切,都有选项。

于 2012-07-11T09:24:34.400 回答