combobox - ZK 窗口在 ID 空间中不是唯一的

标签 combobox listbox zk zul

在我们的项目中,我们使用 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 时起作用。 ,但会在第二次点击时抛出错误。那是因为第二个事件试图添加 myLabelmyWindow但已经有 myLabel那里。

有很多方法可以解决此问题,具体取决于您尝试执行的操作。
查看 ID Spaces 上的 ZK 文档更多。

关于combobox - ZK 窗口在 ID 空间中不是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10186769/

相关文章:

Silverlight RadComboBox 选择后保持打开状态

c# - 如何同步ListBox的SelectedItem?

c# - 更新后的 MS Access 数据库无法正常工作

java - 如何刷新选项卡框项目点击上的数据?

javascript - 动态创建元素的 jQuery "on create"事件

c# - 双向绑定(bind)组合框到枚举

c# - 如何使列表框水平滚动

java - 不允许同时设置 vflex 和高度,除了 ZK 8 中的 vflex ="min"

java - TreeModel 中的内部类的属性不可读

java - Vaadin Comobox 不发送 changeEvent