ZK CDATA и передача переменной? - PullRequest
0 голосов
/ 05 декабря 2010

Я боролся с этим уже пару дней и не могу понять, что это правильно. Вот мой код:

<attribute name="onClick"><![CDATA[
Messagebox.show("Remove this file?", "Remove?", Messagebox.YES | Messagebox.NO, Messagebox.QUESTION,
new EventListener() {
    public void onEvent(Event evt) {
        switch (((Integer)evt.getData()).intValue()) {
            case Messagebox.YES: someFunction(${each.Id}); break;
            case Messagebox.NO: break;
        }
    }
})
]]></attribute>

Приведенный выше код взят из цикла forEach на странице ZK ZUL. Он должен генерировать список файлов, и на каждом файле у вас должна быть кнопка «Удалить». При нажатии на него должно появиться всплывающее окно и запросить подтверждение. После подтверждения он должен передать идентификатор функции, которая с этого момента обрабатывает все.

Я совершенно уверен, что это что-то очень маленькое, что я скучаю или не знаю.

1 Ответ

2 голосов
/ 06 декабря 2010

Здесь есть два вопроса.

  1. Вы не можете использовать EL в zscript. Скорее, вы должны получить к нему доступ через неявный объект. Например,
    <window>
      <button label="${each}" forEach="apple, orange">
        <zscript>
      self.parent.appendChild(new Label("" + each));
        </zscript>
      </button>
    </window>
  1. Однако каждый доступен только при рендеринге страницы. Сбрасывается после оценки. Это означает, что вы не можете получить к нему доступ в прослушивателе событий. Например, следующее не будет работать
    <window>
      <button label="${each}" forEach="apple, orange"
        onClick='alert(""+each)'/> 
    </window>

Сначала необходимо сохранить каждый объект, а затем использовать его в прослушивателе событий.

Вы можете взглянуть на справочник ЗК

...