使用EL-Expression保存ZK MVVM活页夹

时间:2016-12-21 09:33:52

标签: mvvm save zk

如何使用zk MVVM

执行此操作

我想保存一个bean 但有条件 如果类型是个人而不是保存到个人,否则进入公司

<textbox value="@save(vm.personal ? vm.masterCifPersonal.cifId : vm.masterCifCompany.cifId)" width="100px" maxlength="10"/>

但是当binder保存到bean时,会出现此异常

  
    

设置操作的非法语法

  

2 个答案:

答案 0 :(得分:1)

我的建议是修改你的代码并使用临时的var:

<textbox value="@save(vm.temp)" width="100px" maxlength="10"/>

并将您的setter修改为

void setTemp(Long temp) {
    if(personal) {
        masterCifPersonal.cifId = temp;
    } else {
        masterCifCompany.cifId = temp;
    }
}

答案 1 :(得分:1)

另一个解决方案可能是:

ZK 8及以上:

<if test="@load(vm.personal)">
    <textbox value="@save(vm.masterCifPersonal.cifId)"/> 
</if>
<if test="@load(not vm.personal)">
    <textbox value="@save(vm.masterCifCompany.cifId)"/> 
</if>

ZK 6.5更高:

<textbox value="@save(vm.masterCifPersonal.cifId)" visible="="@load(vm.personal)"/>
<textbox value="@save(vm.masterCifCompany.cifId)" visible="="@load(not vm.personal)"/>  

差:

if标签将将其他标签渲染到dom中,而使用visible属性会将其呈现在dom中。
如果个人不是动态的,您可以使用if的{​​{1}}属性,但使用情况为:Textbox ,因为绑定不起作用
像这样,文本框也不会渲染到DOM中。