2017-09-08 12 views
0

こんにちは私は他のオブジェクトに応じて値をバインドしたいと思います。このオブジェクトがnullの場合、デフォルトで値が設定されます。しかし、私はまだNullPointerExceptionを受け取りました。私はそれが「.then(...)によってキャッチされることを期待するが、それは私がリスナーのコンテンツへの結合を追加したときにすべてが正常に動作しますバインディングのNullPointerException

relationType.bind(Bindings.when(Bindings.createBooleanBinding(() -> (relation == null || relation.get()== null), relation)) 
      .then(RelationType.NEUTRAL) 
      .otherwise(relation 
        .get() 
        .typeProperty())); 

場合ではありません:。

relation.addListener((observable, oldValue, newValue) -> { 

    if(newValue != null) { 
     relationType.bind(Bindings 
       .when(relation.isNull()) 
       .then(RelationType.NEUTRAL) 
       .otherwise(newValue.typeProperty())); 
    } else { 
     relationType.unbind(); 
     relationType.setValue(RelationType.NEUTRAL); 
    } 

}); 

しかし、私

答えて

1

relation.get().typeProperty()が評価されるときに問題があります。バインディングが作成されたときに評価され、毎回relationが変更されるとは限りません。コンソールで警告を受け取りますこのアプローチ:

relationType.bind(Bindings.when(relation.isNull()) 
      .then(RelationType.NEUTRAL) 
      .otherwise(Bindings.select(relation, "type")); 
+0

ありがとうございました:)あなたも私の他の質問をご覧いただけますか? – VANILKA

関連する問題