我在@NotifyChange和BindUtils.postNotifyChange之间有一个混淆的用法,为什么要使用这两个事件。在阅读此问题之前
In ZK Can we PostNotifyChange more than one variables。
但是我不明白这个问题,为什么要使用多个变量。
这是一个例子:
@Command
@NotifyChange({ "folderInfoList", "isDisabled", "selectedFolderInfo" })
public void refreshFolderInfo() {
logger.debug("Refresh Icon selected");
if (isDirty()) {
Messagebox.show(pageResourceBundle.getText("JS_CONFIRM_DATAMODIFED"), pageResourceBundle.getText("JS_CONFIRM_DATAMODIFED_TYPE"),
Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION, new EventListener<Event>() {
public void onEvent(Event event) throws Exception {
if (Messagebox.ON_OK.equals(event.getName())) {
loadFolderInfoList();
selectedFolderInfo = null;
BindUtils.postNotifyChange(null, null, FolderInfoEditViewModel.this, "folderInfoList");
} else {
}
}
});
} else {
loadFolderInfoList();
selectedFolderInfo = null;
}
}
谁能告诉我:
我有四个问题:
1.为什么在@NotifyChange中使用isDisabled?
2.这里我可以使用@NotifyChange代替BindUtils.postNotifyChange吗?
3 @NotifyChange和BindUtils.postNotifyChange有什么区别?
4.我只想在方法中的这两个@NotifyChange和BindUtils.postNotifyChange之间使用一个事件。是否可以使用此方法?
最佳答案
1)如果通过此调用在任何情况下都未更改与"isDisabled"
关联的变量,则无需这样做。
但是,也许它在loadFolderInfoList()
内部被更改了
2)您可以想象@NotifyChange({"arg1","arg2",...,"argN"})
与
for(String arg : args){
BindUtils.postNotifyChange(null, null, refToClassCalledFrom, arg);
}
3)但是,只要获得对VM的引用,就可以从任何地方调用
BindUtils.postNotifyChange(...)
。4)在我看来,这段代码来自嵌套的
FolderInfoEditViewModel
类,它本身就是VM以及FolderInfoEditViewModel
。在这种情况下,为嵌套类调用
@NotifyChage(...)
,但是BindUtils.postNotifyChange(null, null, FolderInfoEditViewModel.this, "folderInfoList");
引用它的外部类
FolderInfoEditViewModel
,只能以这种方式存档。关于java - 是否可以使用@NotifyChange代替BindUtils.postNotifyChange?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19977102/