在Play 1.x中,您可以执行&{task?.server?.name}
之类的操作来打印服务器名称(如果存在),或者如果task
或task.server
为空则不打印任何内容。如何在2.x scala模板中获得相同的结果?
我发现了一些关于Scala的一般性问题:
但这些解决方案要么相当冗长,要么需要定义自己的运算符。 Play提供了一种快速的方法吗?或者,如果我需要自己定义操作符,我应该在哪里放置它以便Play找到它? (此时我对Scala几乎一无所知,尽管我正在努力学习)
答案 0 :(得分:0)
这里有许多与空处理相关的问题和答案,所以我只关注你的Play-2相关问题。
我做了一个快速测试,似乎模板系统将空值的直接解除引用转换为空字符串。如果您尝试在作为null传入的对象上调用某个方法,则仍然无法从NPE中保存。为此,您需要使用所有其他答案中描述的一些方法。如果您定义了一个新的操作符,您可以将它放在您喜欢的任何包中,然后将此行添加到您的模板中:
@import some.package._
这将使some.package中的所有内容都可以在模板中访问。
通常的良好实践警告仍然适用:尝试仅在与java的互操作中使用空值。其他一切都有选择。