import org.zkoss.bind.annotation.BindingParam; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Init; import org.zkoss.bind.annotation.NotifyChange; import org.zkoss.zul.ListModelList; public class TabboxRemoveViewModel { private ListModelList tabsModel = new ListModelList<>(); @Init public void init() { tabsModel.add("aaa"); tabsModel.add("bbb"); tabsModel.add("ccc"); tabsModel.add("ddd"); tabsModel.add("eee"); } public ListModelList getTabsModel() { return tabsModel; } //most efficient usage/ notify change not required, no problem // @Command("removeTab") // public void removeTab(@BindingParam("tab") String tab) { // tabsModel.remove(tab); // } @Command("removeTab") @NotifyChange("tabsModel") public void removeTab(@BindingParam("tab") String tab) { tabsModel.remove(tab); // tabsModel = new ListModelList<>(tabsModel); //uncomment this line for a workaround } }