1

我在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,但我不知道如何传递此变量以在其他页面中使用。

有人可以帮助我吗??

4

1 回答 1

1

我认为你的方向是正确的,甚至不需要将对象作为参数传递给你所做的按钮,因为mnoList它是类变量,或者你可以说 ViewModel,所以它已经在你的模态窗口 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 类中。

于 2013-09-30T13:21:15.077 回答