在Play 1.2中,我用來做類似${myobj?.item?.subitem}
的事情。使用模板中的空對象,如何避免NullPointerException?
我在Play 2.0中試過,但沒有任何運氣。有沒有可能的選擇?
感謝您的幫助。
在Play 1.2中,我用來做類似${myobj?.item?.subitem}
的事情。使用模板中的空對象,如何避免NullPointerException?
我在Play 2.0中試過,但沒有任何運氣。有沒有可能的選擇?
感謝您的幫助。
編輯:對不起,我認爲我沒有翻譯這忠實,它是醜陋的。 myobj.item
也可以爲空,因此你必須把它包在Option(_)
:
@Option(myobj).flatMap(i => Option(i.item)).flatMap(s => Option(s.subitem)).getOrElse("empty")
或
@((for {o <- Option(myobj)
item <- Option(o.item)
subitem <- Option(item.subitem)
}).getOrElse("empty"))
注知道playframework有這樣一個共同的情況下,一些額外的糖。
使用第一個示例,我在'_.item'處找到了「類型不匹配;找到:models.MyModel required:Option [?]」(從點開始)。在第二個例子中,你忘了'}':) – 2012-04-24 14:28:56
但是如果我用'.map'替換'.flatMap',它就可以工作!你知道爲什麼和有什麼不同? – 2012-04-24 14:30:24
在Scala中,不鼓勵使用'null'; '選項'是首選。 – 2012-04-24 17:40:19