gpt4 book ai didi

java - 如何在 zk 中找到给定组件的根组件?

转载 作者:行者123 更新时间:2023-12-02 05:08:39 24 4
gpt4 key购买 nike

在我的 View 模型中,我有以下代码:

@Command
public void onFinish(@BindingParam(value = "myButton") Button myButton) {
Component root = myButton.getParent().getParent().getParent();
...
}

是否有更优雅的方法来查找任何给定组件的根组件?每次更改 zul 时都必须更改上面的表达式。

附注我是 zkoss 的新手..:)

最佳答案

这完全取决于组件的根目录是什么。

您的根通常是一个 IdSpace,如果您没有设置其他 IdSpace 元素,您可以使用:

@Command
public void onFinish(@ContextParam(ContextType.SPACE_OWNER) IdSpace spaceOwner) {

...
}

这样,您就不必在 zul 中传递任何内容。
它将自动获取该组件。请记住,IdSpace 是在某些特定组件中实现的接口(interface)。

Please take a look of the other ,也许更适合您的情况,您可以选择。

但是有also other tricks ,这个使用 CSS 选择器:

@Command
public void onFinish(@SelectorParam(":root") Component root) {
...
}

这样你就永远拥有根。

我不太喜欢使用绑定(bind)参数将组件从 View 发送到 View 模型。
原因是今天,您从按钮调用此命令,但也许您在其他组件上添加相同的命令,然后这将失败。
是的,您可以使用 Component 类,但是 MVVM 有很多方法可以更好地做到这一点,而不会污染您的 View 。
请记住,MVVM 的重点是 UI 和代码之间的分离。
什么触发命令可能并不重要,即使您的集合将在屏幕上填充什么也并不重要。

关于java - 如何在 zk 中找到给定组件的根组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59245984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com