在我们的项目中,我们使用 ZK
对于网页。有一个combobox
其中有列表。选中时,它通过 onSelect
从 java 对象中获取数据。 ,我已经给出了逻辑。
当我选择一个时,有 4 listboxes
在该页面上根据选择填充数据。当我第一次选择时,没有问题发生。
但是第二次我收到一个错误弹出窗口,例如“在窗口的 id 空间中不是唯一的”,并显示必须在选择时填写的列表框项目 id。
有人可以帮忙吗?
注意:虽然它显示了这个错误,但我得到了 listboxes
根据组合框选择正确填充。我仍然无法阻止这个错误的发生..
最佳答案
您的问题是 ZK 中的 ID 冲突 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);
}
这将在您第一次单击
myButton
时起作用。 ,但会在第二次点击时抛出错误。那是因为第二个事件试图添加 myLabel
至 myWindow
但已经有 myLabel
那里。有很多方法可以解决此问题,具体取决于您尝试执行的操作。
查看 ID Spaces 上的 ZK 文档更多。
关于combobox - ZK 窗口在 ID 空间中不是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10186769/