我在zk中有这段代码:
@Command
public void showModal(@BindingParam("languageContributionStatus") UserStatus mnoList) {
//create a window programmatically and use it as a modal dialog.
final HashMap<String, Object> map = new HashMap<String, Object>();
setPickedItemSet(mnoList.getMnoList());
map.put("mnoList", mnoList.getMnoList());
win = (Window) Executions.createComponents("/comListMnosUser.zul", null, map);
win.doModal();
}
在此代码中,我有一个页面,并在另一个页面中创建了一个包含其他页面的窗口:
<zk xmlns="http://www.zkoss.org/2005/zul">
<window id="CreateList" border="normal" mode="modal" width="320px"
apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('com.UserMno')">
<label value="First Name"></label>
<listbox model="@bind(vm.allMno)" checkmark="true" multiple="true" selectedItems="@bind(vm.mnoList)"/>
<button id="SaveBtn" hflex="1" label="Save" onClick="@command('save', mnosL=vm.mnoList)" />
</window>
</zk>
然后我需要保存变量 mnoList 以在上一页中使用,但我不能使用 Excecution.createComponent,因为我只需要关闭窗口,因为我有 win.doModal();
并使用变量 mnoList,但我不知道如何传递这个变量以在其他页面中使用。
有人可以帮助我吗??
我认为您处于正确的方向,甚至不需要将对象作为带有按钮的参数传递,因为mnoList
是类变量,或者您可以说 ViewModel,因此它已经在您的模态 Window java 类上可用。你能做什么.
1-使用相同的按钮并编写这样的代码
<button id="SaveBtn" hflex="1" label="Save" onClick="@command('save')" />
2 UserMno.java
类使用这样的方法。并编写逻辑以从子视图模型调用父视图模型方法。
@Command
public void doReorder(@ContextParam(ContextType.VIEW) Component view) {
Map<String, Object> params = new HashMap<String, Object>(); //create a Map to store
params.put("param", mnoList);
Binder bind = (Binder) view.getParent().getAttribute("binder");
if (bind == null)
return;
bind.postCommand("parentclassMethodName", param);
}
此parentclassMethodName
方法应位于父 ViewModel 类中。