использовать параметры в условной команде в zk framework

#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')" />