Использовать параметры в условной команде в рамках 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')" />