2017-01-31 5 views
0

ページにモデルがあります、私はsetDefaultModel()をしました。ページにラベルが追加されました:PropertyModel:対象モデルが変更された場合はどうなりますか?

Label name=new Label("name", new PropertyModel<String>(getDefaultModel(), "name")); 
add(name); 

その後、ページのモデルが変更されます。しかし、プロパティモデルのターゲットモデルは、元のページのモデルです。

対象モデルが変更されたときにプロパティモデルを更新するにはどうすればよいですか?

答えて

2

通常、このタイプの問題のため、setDefaultModel()またはsetModel()を使用することをお勧めします。

new Label("name",() -> ((Foo)getDefaultModel()).getName()); 
+0

(この、 "defaultModelObject.name")が働く新しいPropertyModel:

new Label("name", new PropertyModel<String>(this, "defaultModel.name")); 

...またはウィケット8と:

別の方法としては、別の間接を追加することができます。 – ericj

+1

これで分かりました。違いは検索が始まるところです。 'new PropertyModel (getDefaultModel()、" name "')の場合、モデルは変更されないターゲットモデルから始まり、 'PropertyModel (これは" defaultModelObject.name ")の場合、モデルはページを開き、それを下に動かし、変更された 'defaultModel'に遭遇します。 – ericj

関連する問題