Play 1.2では、私は${myobj?.item?.subitem}
のようなものを使用しています。テンプレートで空のオブジェクトを操作すると、NullPointerExceptionを回避する方法は?
私はPlay 2.0でこれを試しましたが、幸運はありません。可能な選択肢はありますか?
ありがとうございます。
Play 1.2では、私は${myobj?.item?.subitem}
のようなものを使用しています。テンプレートで空のオブジェクトを操作すると、NullPointerExceptionを回避する方法は?
私はPlay 2.0でこれを試しましたが、幸運はありません。可能な選択肢はありますか?
ありがとうございます。
編集:申し訳ありませんが、私はこれを忠実に翻訳していないと思うし、醜いです。あなたはOption(_)
でそれをラップする必要があると思いますので、myobj.item
もnullになる可能性:playframeworkは、このような一般的なケースのためのいくつかの追加の砂糖を持っているかどうかわから
@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"))
注意。
最初の例を使用して、「_.item」(ドットの後に開始)に「タイプの不一致; found:models.MyModel required:Option [?]」が表示されました。 2番目の例では、 '}'を忘れてしまいました:) –
'.map'だけ' .flatMap'を置き換えれば動作します!あなたはなぜ、そしてその違いは分かっていますか? –
Scalaでは、 'null'の使用はお勧めしません。 'Option'が好ましい。 –