ZK Wire Components 在@command方法(MVVM)中无法访问,或者视图模型不可访问(doAfter



我认为我在理解Wire组件方面存在根本问题,如果有人可以解释为什么它们适用于ComposerdoAfterCompose() -方法以及为什么接线剂量不起作用(组件 -> NULL)在@command方法(如从按钮单击)。

我无法发布整个代码,所以我只是粘贴工作 zul 和工作 Java 类的一部分

我用MVVM访问一些values from ZUL-Components。用于此目的的java class也与来自数据库的数据(in doAfterCompose() -Method)generates some components dynamically

Szenario:gui 显示并通过doAfterCompose()使用Wire Component orgTypeRows(行类型)动态创建多个组件(行组件 + 行组件中的复选框)。这工作正常。

但是要访问结果,请单击搜索按钮,该按钮具有调用java方法startSearch() onClick event "startSearch"。在这种方法中,我想访问生成的组件(类型复选框)并验证已选中哪些框,但是当我尝试在此处访问电线组件时,行组件为 NULL

以下是ZUL-Code search.zul和Java-Code搜索.java

这样不可能吗?我是否应该只在doAfterCompose()中为按钮使用侦听器而不是@command但是doAfterCompose()视图模型的所有值都是 NULL 的情况下,我如何访问视图模型?

我认为你在MVC和MVVM上有一个根本问题。

让我们从您展示的 zul 开始。
我在 zul 中找不到任何apply属性,因此控制器或视图模型必须应用于另一个 zul,所以我不知道您在使用什么,MVC 或 MVVM。
属性的加载是 MVVM 方式。

现在让我们进入 java 类。
您正在混合两种完全不同的东西。
首先,扩展GenericForwardComposer是一种MVC方式。它甚至是一个旧的,因为SelectorComposer是最新的MVC控制器,您可以在其中注释接线必须执行的操作。

@Init@Command => MVVM
@doAfterCompose , 接线 => MVC

现在你说@Command方法不起作用。你的意思是不触发?
不要忘记 MVVM 方式需要一个活页夹。
视图模型的初始化:

apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('yourPackage.YourClass')"

MVC 控制器的初始化:

apply="yourPackage.YourClass"

看到区别了吗?
请在zk网站上阅读有关MVC和MVVM的文档。
然后重构你的整个事情,如果你仍然有问题,请回来提出一个更好的问题,我们可以为您提供帮助。

相关内容

  • 没有找到相关文章

最新更新