2011-07-01 9 views
2

ユーザIDの検索結果として返されるnet.liftweb.util.Boxオブジェクトがあります。ボックスオブジェクトは次のような内容を返します。Lift Scala net.liftweb.util.Boxオブジェクト内のアクセスエンティティ

net.liftweb.util.Box[MyEntity{attributes}] 

ボックス内のエンティティにアクセスするにはどうすればよいですか?特に、ボックス内のエンティティの属性にアクセスする必要があります。

答えて

5

あなたはforeachの/マップ・メソッド呼び出し内ボックスの内容にアクセスすることができますhttp://lift.la/scala-option-lift-box-and-how-to-make-your-co

を参照してください。たとえば、あなたのエンティティのうちの名前を取得したい場合:ボックスがいっぱいになっている

myBoxedEntity.map(_.name) openOr "No Name Provided" 

場合、あなたはそれ以外のエンティティ名を取得します、あなたがメッセージを取得します。

+0

フィールドだけでなく、完全なオブジェクトをどのようにアンボックスしますか。たとえば、返されたオブジェクトのフィールドに基づいて新しい任意のオブジェクトを作成したいとします。 – Jack

1

オブジェクトdmap上で何らかの操作を実行したい場合は参考にしてください。例えば

fooBox.dmap("Yo!")(foo => 
    // dome some staff with foo 
    result // must be string 
) 

あなたはfooBox.open_を呼び出して直接要素を取得することができます!しかし、それはお勧めしません。ボックスが空の場合、nullポインタ例外が発生することがよくあります。

関連する問題