gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:08:21 24 4
gpt4 key购买 nike

我有一个 .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/

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