#command #arguments #conditional #zk #zul
#команда #аргументы #условные операторы #zk #zul
Вопрос:
Я пытаюсь использовать условную команду @ с аргументом, передаваемым при выполнении.createComponents, это мой Java-код:
Map data = new HashMap();
data.put("isFromHere", true);
modal = (Window) Executions.createComponents("root/to/window", null, data);
modal.doModal();
И на моей странице zul я пытаюсь это сделать:
<button label="Save" onClick="@command(arg.isFromHere ? 'save' : 'not')" />
Но каждый раз, когда arg.isFromHere возвращает false , как будто аргумент не передан. Но если я сделаю это:
<button if="${arg.isFromHere}" label="Save" onClick="@command('save'" />
Это отлично работает! Что означает, что аргументы попадают на страницу zul, но не работают с условными командами, есть ли способ заставить это работать?
Ответ №1:
Все это связано с жизненным циклом связующего.
@Command
и ${arg.xxx}
находятся на разных жизненных циклах.
Прочитайте эту документацию и найдите в ней свое решение.
Решение для вас :
Виртуальная машина :
private boolean fromHere;
@Init
public void init(@ExecutionArgParam("isFromHere") boolean fromHere){
this.fromHere = fromHere;
}
public boolean isFromHere() {
return fromHere;
}
zul :
<button label="Save" onClick="@command(vm.fromHere ? 'save' : 'not')" />