Передать переменную между страницами в zk

У меня есть этот код в 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, но я не знаю, как я могу передать эту переменную для использования на другой странице.

Кто-нибудь может мне помочь??

1 ответ

Я думаю, что вы находитесь в правильном направлении, даже не нужно передавать объект в качестве аргумента с кнопкой, которую вы сделали, потому что mnoList является переменной класса, или вы можете сказать ViewModel, так что он уже доступен в вашем модальном классе Java окна. Что ты можешь сделать.

1-Используйте ту же кнопку и код что-то вроде этого

<button id="SaveBtn" hflex="1" label="Save" onClick="@command('save')" />

2-В UserMno.java Класс использует метод, подобный этому. И пишите логику для вызова метода Parent ViewModel из Child ViewModel.

    @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.

Другие вопросы по тегам