您的问题是 ZK 中的 ids 冲突id space。
有点背景..
ZK 在运行时为组件生成 id,如果您在浏览器中打开 DOM,您将看到每个组件都有一些机器可读的 id。
但是,您也可以为组件指定一个 id。该 id 不会转到 DOM,但可以让您在应用程序中引用该组件。
这两者不应该混淆。您遇到的冲突与后一种 id 类型有关;您在 Java 代码或 ZUL 文件中为组件分配一个 id,该 id 在运行时不是唯一的。
您所描述的仅在您第二次单击时发生的情况是一个明显的迹象。您在事件中添加的内容已在其中定义了一个 ID,完成后您不会删除该内容。
考虑以下示例:
@Wire
private Window myWindow;
@Listen(Events.ON_CLICK + " = #myButton")
public void onMyButtonClicked() {
Label myLabel = new Label("sean is cool");
myLabel.setId("myLabel");
myLabel.setParent(myWindow);
}
Run Code Online (Sandbox Code Playgroud)
这将在您第一次单击 时起作用myButton,但会在第二次单击时引发错误。这是因为第二个事件试图添加myLabel,myWindow但那里已经存在了myLabel。
有很多方法可以解决这个问题,具体取决于您想要做什么。
请参阅有关ID 空间的 ZK 文档了解更多信息。
| 归档时间: |
|
| 查看次数: |
6914 次 |
| 最近记录: |