0

我想在我的文档中显示一个一对多的关系——一个带有值的简单下拉列表。为此,我尝试LookupField使用Cuba 平台创建和配置组件。

我有两个实体:

卡片项目:

@NamePattern("The document in the following state: %s|cardState")
@Table(name = "TKB_CARD_ITEM")
@Entity(name = "tkb$CardItem")
public class CardItem extends StandardEntity {

    // skipped

卡的种类:

@NamePattern("CardType: %s, %s |cardTypeItem, cardTypeName")
@Table(name = "TKB_CARD_TYPE")
@Entity(name = "tkb$CardType")
public class CardType extends StandardEntity {

    @OneToMany(targetEntity=CardItem.class )
    private List<CardItem> cardItems;

    // skipped

在我的card-item-edit.xml我有以下内容:

<dsContext>
    <datasource id="CardItemDs" class="com.company.tkb.entity.CardItem" view="_local"/>
    <collectionDatasource id="CardTypeDs" class="com.company.tkb.entity.CardType" view="_local">
        <query>select c from tkb$CardType c</query>
    </collectionDatasource>
</dsContext>
<layout>
    <lookupField datasource="CardItemDs" property="cardTypeName" optionsDatasource="CardTypeDs"/>

我在表格中填满了TKB_CARD_TYPE一些值。现在,我在创建 CardItem 时尝试获取一个包含值的下拉列表,但该列表为空。

可能是什么问题呢?

我将非常感谢您提供的信息。谢谢大家。

4

1 回答 1

0

有什么帮助:

CardItemEdit课堂上,我添加了以下内容:

public class CardItemEdit extends AbstractEditor<CardItem> {
    @Inject
    private Datasource<CardItem> cardItemDs;

    @Inject
    private Metadata metadata;

    @Override
    public void init(Map<String, Object> params) {
        CardItem cardItem = metadata.create(CardItem.class);
        cardItemDs.setItem(cardItem);
    }   
}

然后我改变了关系的方向:我CardItem实体的一部分:

@NamePattern("The document in the following state: %s|cardState")
@Table(name = "TKB_CARD_ITEM")
@Entity(name = "tkb$CardItem")
public class CardItem extends StandardEntity {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "CARD_TYPE_ID")
    protected CardType cardType;

    // skipped

我的CardType实体的一部分:

@NamePattern("Тип входящего документа: %s | cardTypeName")
@Table(name = "TKB_CARD_TYPE")
@Entity(name = "tkb$CardType")
public class CardType extends StandardEntity {

    // skipped

我通过这种方式定义了dsContextand :lookupField

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
        caption="msg://editCaption"
        class="com.tkbbank.client.web.item.CardItemEdit"
        datasource="cardItemDs"
        focusComponent="fieldGroup"
        messagesPack="com.tkbbank.client.web.item">

     <dsContext>
        <datasource id="cardItemDs" class="com.tkbbank.client.entity.CardItem" allowCommit="false"/>
            <collectionDatasource id="cardTypeDs" class="com.tkbbank.client.entity.CardType" view="_local">
            <query>
                <![CDATA[select e from demo$CardType e]]>
            </query>
        </collectionDatasource>
    </dsContext>


    <dialogMode forceDialog="true" width="AUTO"/>
    <layout expand="windowActions" spacing="true">
        <fieldGroup id="fieldGroup" datasource="cardItemDs">
            <column width="500px">
                <field id="cardCreationDate" editable="false"/>
                <field id="cardType" caption="Тип документа">
                    <lookupField datasource="cardItemDs" property="cardType" optionsDatasource="cardTypeDs"/>
                </field>
                <field id="cardSubtype"/>
                <field id="cardAutoFill"/>
                <field id="cardOutcomeNumber"/>
                <field id="cardDate"/>
                <field id="cardOrganization"/>
                <field id="cardDeliveryMethod"/>
                <field id="cardAdditionalInformation"/>
                <field id="registratorName"/>
            </column>
        </fieldGroup>
        <frame id="windowActions" screen="editWindowActions"/>
    </layout>
</window>

我现在看到的。我的卡:

在此处输入图像描述

用数据填充 CardType 的接口:

在此处输入图像描述

查看所有文档的界面:

在此处输入图像描述

现在一切正常。

旁边:关于“找不到属性的getter”异常的非常有用的问题(也出现了这个错误):

于 2018-05-30T13:53:27.587 回答