我有实体FDataTableColumn,其字段referenceFieldId是long类型并且引用到此列的id。在创建页面上我有所有列的列表的组合框,我想选择一个并将其id值放入我的referenceFieldId。 这是我的组合框:
<combobox model="@load(fdtcm.fDataTableColumns)" selectedItem="@bind(fdtcm.fDataTableColumn.referenceFieldId)" width="50%">
<template name="model">
<comboitem label="@load(each.table.tableName.concat('.').concat(each.tableField))" value="@bind(each.id)"/>
</template>
</combobox>
看起来一切都很好,但我得到了这个例外
Cannot convert FDataTableColumn{id=6, type=STRING, tableField='EMAIL'} of type class ru.webvane.framework.metadata.entity.FDataTableColumn to class java.lang.Long at [file:/E:/apache-tomcat-7.0.28%20(64)/webapps/fw/fw/importData/dataTableColumn/input.zul, line:86]
据我所知,我的组合试图将整个对象保存到referenceFieldId,但为什么呢?因为我正在尝试保存对象的id
value="@bind(each.id)"
任何人都可以帮助我或解释我做错了什么。谢谢
答案 0 :(得分:2)
SergeBud,
有可能这样做但是正如askkuber已经指出的那样,组合框内部的类是将要保存的类。
现在你必须实施your own custom converter:
然后应该像zul一样:
selectedItem="@bind(fdtcm.fDataTableColumn.referenceFieldId) @converter(fdtcm.myConverter)"
答案 1 :(得分:0)
您可以查看我编写的以下代码zkframeworkhint.blogspot.in/2013/05/zk-combobox-with-selectoption.html,这将向您解释使用Combobox的正确方法。
编辑: -
然后,您可以查看此链接Combobox这将有助于您
看 selectedItem 应该是 FDataTableColumn 类的对象,但在你的情况下,你将它称为 id ,长> strong>这可能是异常更改代码的原因。