Я работаю над кодом в проекте калитки, где оригинальные разработчики довольно часто использовали метод onModelChanged()
в методах обработки запросов Ajax. Я, например, не сильно верю в эту реализацию.
На самом деле, я не могу вспомнить ни одного примера, где вызов target.add(...)
уступает вызову метода onModelChanged.
Мне не хватает некоторых ключевых понятий здесь?
Пример:
public MyComponent extends Panel {
public MyComponent(String id, Component... componentsToRefresh) {
add(new AjaxLink<Void>("someId") {
@Override
public void onClick(AjaxRequestTarget target) {
// some logic with model change
for(Component c: componentsToRefresh) {
c.modelChanged();
}
target.add(componentsToRefresh);
}
};
}
}
Теперь есть пара вещей, с которыми я не согласен, самый первый - это параметр componentToRefresh, второй - (как предполагает вопрос) тот факт, что мы вызвали c.modelChanged()
для всех компонентов в этом массиве. , Я предполагаю, что это совершенно не нужно, и вместо параметра в конструкторе нужно просто написать пустую функцию в MyComponent
и переопределить ее, а также при необходимости поместить туда необходимые компоненты.