zk框架中self和each的含义

what meaning of self and each in zk framework

我的项目下面有一些代码。上次使用这个框架的人已经离开了这个公司。请有人向我解释下面的代码。 self@each.
是什么意思 我不知道下面的 listcell @item.areaNo 前缀项来自 self="@{each='item' }value="@{item }。而且我真的不知道self="@{each='item' }是什么意思。

<listitem self="@{each='item' }" value="@{item }" 
               forward="onDoubleClick=onDoSelectItem,onClick=onDoChkDelete">
    <listcell>
        <fixedmodecheckbox label="${labels.delete}" />
    </listcell>
    <listcell label="@{item.areaNo}" />
    <listcell label="@{item.formattedLocationNo}" />
    <listcell label="@{item.storerCode.storerCode}" />              
    <listcell label="@{item.itemCode.itemCode}" />
    <listcell label="@{item.itemCode.itemName }" />
    <listcell label="@{item.stratedgyValue_2 }" />
    <listcell label="@{item.palletNo }" />
    <listcell label="@{item.itemCode.packCode.packCode }" />
    <listcell label="@{item.stockCaseQty }" />
    <listcell label="@{item.stockPieceQty }" />
    <listcell label="@{item.allocationCaseQty }" />
    <listcell label="@{item.allocationPieceQty }" />
</listitem>

您的代码使用 "old databinding" 语法呈现对象集合。 ZK 5 Developer's Reference, page 139 (available from the archive section) 中仍然提到它。尽管至少已弃用 6 或 7 年,但它仍然是 ZK 的一部分,以支持您的情况下的遗留代码。

它的作用(我也有点猜测,因为这在旧代码中很少出现)是:

each 是集合的当前对象,它被赋予了一个名称 item,因此它可以在这个重复组件 self 内的绑定表达式中访问。

value="@{item}" 然后将简单地调用 listitem.setValue(item) 以便您的列表项记住与之关联的对象。

我同意语法很奇怪,我认为这就是为什么自 ZK 6 或 6.5 以来 新绑定注释 语法已弃用和取代它的原因(您可以看到类似的示例在 this current documentation page) 的底部。

但是,升级不是直接替换,需要对您的 java 代码进行相当多的重构。这就是为什么这种代码一直存在的原因。