java - 如何将参数发送到包含的组件?

标签 java zk

我有一个 .zul 文件 index.zul。它包含另一个 .zul 文件 Prueba1.zul。我正在使用zk7。

    <window border="normal" title="Test Send Argument" apply="org.zkoss.bind.BindComposer"
            viewModel="@id('vm') @init('com.test.ControladorPadre')">
        <include type="@load(vm.mapType)" src="Prueba1.zul"/>
....
    </window>
</zk>

<zk>
  <window border="normal" title="Controlador 1" apply="org.zkoss.bind.BindComposer"  zclass="z-window-popup"
         viewModel="@id('vm') @init('com.test.Controlador1')" >
        <button onClick="@command('doSort')" type="button" label="BT1" />
  </window>
</zk>

他们应用不同的 View 模型。我想从 Prueba1.zul 发送回参数以在 index.zul 中显示并在 ControladorPadre 类中进行处理。

我尝试过并搜索过,但没有成功。我目前只知道一种方法是使用BindUtils.postGlobalCommand。我不确定这是否是一个好的处理方法,或者是否存在其他方法来解决我的问题。

最佳答案

有一些解决方案

第一个是将您的第一个 View 模型传递给第二个 View 模型。

文档 of @init说:

 viewModel="@id('vm') @init('org.zkoss.reference.developer.mvvm.databinding.InitVM', arg1='myValue')"

所以在你的情况下:

 viewModel="@id('vm2') @init('com.test.Controlador1', arg1=vm)"

如果你看起来不错,我更改了第二个虚拟机的id,因为你不想将你的 zul 与虚拟机混淆。
Prueba1.zul 中,虚拟机也处于 Activity 状态,您可以在那里加载(甚至保存)数据。

第二个:保存在vm和vm1中。

<textbox value="@load(vm.someText) @save(vm.someText) @save(vm1.someText)"/>

当然,有时你需要在命令之后传递它,那么这个选项就不起作用了。

全局命令可以做到这一点,在我看来是最好的解决方案,但不要忘记所有 Activity 的 View 模型将被检查如果该命令存在,所以请确保你使唯一的全局-命令或者您有一些不需要的行为。

关于java - 如何将参数发送到包含的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50800392/

相关文章:

java - 仅在使用 java 11 的 Windows 10 上,64 位 dll 的内存访问无效

java - 如何将ZK表单与提交按钮链接

java - Spring Boot 2 Actuator/health 端点在使用身份验证时不显示附加信息

java - CDI Weld 忽略排除项

java - ZK中动态初始化窗口

javascript - ZK Framework 在 Chrome 17 中不起作用吗?

java - 如何访问 ZKoss 中的 session 范围实例

java - ZK自定义列表框组件

java - 如何将Jmenubar添加到mouseclick程序中?

java - 执行使用ANT编写的JAR时出现问题