gpt4 book ai didi

java - ZK MVVM 验证消息自动绑定(bind)?

转载 作者:行者123 更新时间:2023-11-30 07:10:38 24 4
gpt4 key购买 nike

我有一个宏组件,它结合了标签、文本框和错误标签...

<mycomponent id="productname" caption="Product name" value="Apple XYZ" error=""/>

...现在我想用它来绑定(bind)...

显然我可以写...

<mycomponent id="productname" caption="Product name" value="@bind(vm.productName)" error="@bind(vmsgs['productname'])"/>

(当然,上面有一个 validationMessages="@id('vmsgs') - 正确的注释已就位,因此此绑定(bind)工作正常)

...但是,当然,我必须为每个字段执行此操作,这会使我的 .zul 文件变得困惑。那么,是否有机会以某种方式(甚至在 java 代码中)告诉组件将其自身绑定(bind)到带有组件 id 的 vmsgs,而不必为每个字段提供该 id?这样会有同样的效果...

<mycomponent id="productname" caption="Product name" value="@bind(vm.productName)"/>

..或者也许

<mycomponent id="productname" caption="Product name" value="@bind(vm.productName)" bindError="true"/>

当然,该组件应该在非 MVVM 环境中保持可用,因此添加固定绑定(bind)可能是不可行的。例如,是否有机会在 Java 中找出我们是否以某种方式绑定(bind)并自动添加我们自己的绑定(bind)?

最佳答案

这个问题的解决方案其实很简单:

@ComponentAnnotation("@bind(vmsgs[self.id])")
public void setError(String value) {
this.error.setValue(value);
}

这允许将错误字段绑定(bind)到 vmsgs[self.id],在上述情况下将是 vmsgs['productname'],这是有效的。

当我将多个这些组件堆叠到另一个宏组件中时,它才开始变得复杂......

<zk>
<mycomponent id="productname" caption="Product name" value="@bind(vm.productName)"
<mycomponent id="producttype" caption="Product type" value="@bind(vm.productTye)"
</zk>

...因为这样,原始组件就不再是 myComponent,而是“外部”宏组件,因此 self.id(productname, Producttype) 就不够了。这可以通过在 validator 中给出显式 key 来处理...

SavePropertyBinding binding = (SavePropertyBinding)ctx.getBindContext().getBinding();
String fieldName = binding.getFieldName();

...但是我们遇到了问题, validator 无法与独立的 mycomponents 一起工作(它们仍然期望 id 作为 validator 消息 key )。

嗯,这是一个开始,通过使用自定义注释,我教我的 validator 识别要使用哪个 id,也许不是最好的解决方案,但至少是一个解决方案。

关于java - ZK MVVM 验证消息自动绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39288678/

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