ZK CDATA并传递一个变量?

时间:2010-12-05 06:02:14

标签: variables escaping cdata zk

我一直在努力解决这个问题几天,我似乎无法做到这一点。 这是我的代码:

<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>

以上代码来自ZK ZUL页面中的forEach循环。它应该生成一个文件列表,并且在每个文件上都应该有一个“删除”按钮。当你点击它时,应该出现一个弹出窗口并要求确认。确认之后,它应该将id传递给一个函数,然后处理所有内容。

我很确定这是一个非常小的东西,我想念或不知道。

1 个答案:

答案 0 :(得分:2)

这里有两个问题。

  1. 您不能在zscript中使用EL。相反,您必须通过隐式对象访问它。例如,
  2.     <window>
          <button label="${each}" forEach="apple, orange">
            <zscript>
          self.parent.appendChild(new Label("" + each));
            </zscript>
          </button>
        </window>
    
    1. 但是,每个都只在页面渲染中可用。它在评估后重置。这意味着,您无法在事件侦听器中访问它。例如,以下内容不起作用
    2.     <window>
            <button label="${each}" forEach="apple, orange"
              onClick='alert(""+each)'/> 
          </window>
      

      您必须先存储每个对象,然后在事件侦听器中使用它。

      您可以查看ZK's reference