2017-01-31 3 views
0

На этой странице есть модель, я сделал setDefaultModel(). У меня есть ярлык, добавленный на страницу:PropertyModel: что, если изменения целевой модели?

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

Позже изменяется модель страницы. Но целевая модель модели собственности по-прежнему является исходной страницей.

Что можно сделать, чтобы обновить модель свойств при изменении целевой модели?

ответ

2

Обычно я рекомендую использовать setDefaultModel() или setModel(), именно из-за этого типа проблем.

В качестве альтернативы вы можете добавить еще косвенность:

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

... или с калиткой 8:

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

новый PropertyModel (это, "defaultModelObject.name") работает. – ericj

+1

Теперь я понимаю. Разница заключается в том, где начинается поиск. В случае 'new PropertyModel (getDefaultModel(),« name »', модель начинается с целевой модели, которая не изменяется. В случае 'PropertyModel (это, defaultModelObject.name), модель начинается с страницы, и работает он вниз, и сталкивается с 'defaultModel', который был изменен. – ericj

Смежные вопросы