リストボックスから選択したアイテムを正常に削除しましたが、その後、すべてのオブジェクトがデータベースから削除され、リストボックスが更新されました。次に、はいといいえのオプションを含む確認ボックスを追加しましたが、リストが更新されませんでした。zkフォーラムで同様の問題を解決するこのスレッドを見ました。実装しましたが、クラスキャスト例外が発生しました
私はMVVMを使用しています
http://forum.zkoss.org/question/73640/refreshing-listbox-after-deleting-an-itemrow/
例外を取得するコード:
AnnotateDataBinder binder = (AnnotateDataBinder) userWin.getAttribute("binder");
binder.loadAll();
例外:
Mar 21, 2013 5:22:23 PM org.zkoss.zk.ui.impl.UiEngineImpl handleError:1352
SEVERE: >>java.lang.ClassCastException: org.zkoss.bind.AnnotateBinder cannot be cast to org.zkoss.zkplus.databind.AnnotateDataBinder
あなたから聞いて楽しみにして。ネットを検索しましたが、zk を更新する以外に何も見つかりませんでした。私はすでに zk 6.5.1.1 の最新バージョンを使用しています。
前もって感謝します。
@提案されたコード行を追加した後、私のリストは更新されませんでした。これが私の方法です
@Override
@Command("deleteAllSelected")
@NotifyChange({"selectedObject","objectList"})
public void deleteAllSelected() {
logger.info("in deleteAllSelected()>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
logger.info("direct selection: " + objectList.getSelection());
final Set<UserIntelliopsDTO> setMe = objectList.getSelection();
logger.info("selectedion size in dellete all" + setMe.size());
EventListener<ClickEvent> clickListener = new EventListener<Messagebox.ClickEvent>() {
public void onEvent(ClickEvent event) throws Exception {
if (Messagebox.Button.YES.equals(event.getButton())) {
int i =0;
for(UserIntelliopsDTO dto:setMe){
userService.deleteUserIntelliops(dto.getUserIntelliOps().getUserId());
logger.info("siapa:userIntelliops " + dto.getUserIntelliOps() + dto.getUserIntelliOps().getUserId());
selectedObject = null;
logger.info("iteration: " + i);
++i;
}
selectedObject = null;
deleteAllSelectedButton.setVisible(false);
enableEditMode(true);
}
}
};
Messagebox.show("Are you sure you want to delete all selected records?", "Delete All Selected",
new Messagebox.Button[] { Messagebox.Button.YES,
Messagebox.Button.NO }, Messagebox.QUESTION,
clickListener);
BindUtils.postNotifyChange(null, null, this, "*");
}