Передать переменную между страницами в 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.