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

Я пытаюсь использовать условную @command с аргументом, переданным с Executions.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;
}

зул:

<button label="Save" onClick="@command(vm.fromHere ? 'save' : 'not')" />
Другие вопросы по тегам