我正在编写一个 wicket 项目中的代码,原始开发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);
}
};
}
}
现在,有几件事我不同意,第一个是 componentsToRefresh 参数,第二个是(正如问题所暗示的那样),我们调用c.modelChanged()
了该数组中的所有组件这一事实。我的猜测是它完全没有必要,而不是构造函数中的参数,应该只写一个空函数MyComponent
并覆盖它,并在需要时将必要的组件放在那里。