是否可以使用@NotifyChange而不是BindUtils.postNotifyChange?

我在@NotifyChange和BindUtils.postNotifyChange之间有一个混淆,为什么要使用这两个事件。之前我读过这个问题在ZK中我们可以PostNotifyChange多个变量 。 但是我无法理解这个问题为什么要使用这个多个变量。

这是一个例子:

@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() { 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 ,并且只能以这种方式存档。