大家好,最近在使用cuba进行实验。对cuba自带的User进行了扩展,增加了几个字段,在原有的基础上增加了telephone,address,company的字段。其中telephone,address都是简单字段都是string类型的。company是个实体类。按照用户手册的说明扩展了界面,在userbrowse方面没有问题。在useredit遇到了问题,我想将company做成lookupfield,扩展进原有的useredit中,按照下面这种写法,在edit界面上面是不显示company下拉框的。
请问,此类问题应该怎么实现?
通过改写edit xml文件,目前可以comapny的下拉框展示出来,新的问题是,下拉框内的数据没有填充进去。
cuba自带的user-edit.xml没有使用cuba7新引入的dataContainer这些;还是沿用的旧版的datasource。
试试这样:
- 扩展实体:
@ManyToOne
@JoinColumn(name = "COMPANY")
protected Company company;
- 扩展user-edit.xml
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
xmlns:ext="http://schemas.haulmont.com/cuba/window-ext.xsd"
extends="/com/haulmont/cuba/gui/app/security/user/edit/user-edit.xml">
<dsContext>
<!-- 覆盖view,因为要额外加载Company实体-->
<datasource id="userDs" class="com.test.entity.ExtUser" view="extUser-view_1">
</datasource>
<!--配置所有companyList的数据源,下拉展示-->
<groupDatasource id="companyDs" class="com.test.entity.Company" view="_local">
<query>
<![CDATA[select e from test$Company e]]>
</query>
</groupDatasource>
</dsContext>
<!--修改布局-->
<layout>
<groupBox id="propertiesBox">
<grid id="propertiesGrid">
<columns>
<column id="fieldGroupRight1Column" flex="1" ext:index="0"/>
</columns>
<rows>
<row id="propertiesRow">
<fieldGroup id="fieldGroupRight1" datasource="userDs">
<column>
<field property="company" ext:index="0" optionsDatasource="companyDs"/>
</column>
</fieldGroup>
</row>
</rows>
</grid>
</groupBox>
</layout>
</window>
- 上一步中新的user的view定义:
<view class="com.test.entity.ExtUser"
extends="user.edit"
name="extUser-view_1"
systemProperties="true">
<property name="company"
view="_minimal"/>
</view>
- 效果
2 个赞
完美解决问题,感谢技术团队的支持