1

別のデータ ソースで定義されている 1 つ以上の要素をフォーム フィールドに含めようとしています。要素には、数値 ID と人間が判読できる名前があります。保存しようとするまで、すべてうまくいきます。この場合、常に「有効なオプションではありません」というエラーが表示されます。

私が編集しているフォームは、0 個以上のトランクにリンクされている可能性がある Campaigns データソースに基づいています。

データソース トランクは次のように定義されます。

    DataSourceField fId = new DataSourceField(
            "trunkId", FieldType.INTEGER, "Id");
    fId.setPrimaryKey(Boolean.TRUE);
    fId.setHidden(Boolean.TRUE);
    fId.setCanEdit(Boolean.FALSE);

    DataSourceField fName = new DataSourceField(
            "trunkName", FieldType.TEXT, "Name");
    fName.setRequired(Boolean.TRUE);

データソース キャンペーンには、次のように定義されたフィールド「トランク」があります。

    DataSourceField fTrunk  = new DataSourceField(
            "trunk",
            FieldType.INTENUM,
            "Trunk"
    );
    fTrunk.setMultiple(Boolean.TRUE);
    fTrunk.setForeignKey("CfgTrunkDS.trunkId");

複数の値を選択できるようにするためのフォーム定義は次のとおりです。

    final DynamicForm form = new DynamicForm();
    form.setIsGroup(true);
    form.setGroupTitle("Update Campaign");
    form.setNumCols(4);

    form.setDataSource(dsCampaign);
    form.setUseAllDataSourceFields(Boolean.TRUE);

    final SelectItem selectItemMultipleGrid = new SelectItem("trunk");
    selectItemMultipleGrid.setTitle("Trunk to use");
    selectItemMultipleGrid.setMultiple(true);
    selectItemMultipleGrid.setMultipleAppearance(MultipleAppearance.PICKLIST);
    selectItemMultipleGrid.setOptionDataSource(CfgTrunkDS.getInstance());
    selectItemMultipleGrid.setValueField("trunkId");
    selectItemMultipleGrid.setDisplayField("trunkName");


    form.setFields(selectItemMultipleGrid);

複数の値も正しく表示されます。「トランク」フィールドを見ると、ID が 12 と 16 の要素を選択すると、「12, 16」のような文字列が表示されますが、それでも検証に合格しません。また、フォーム定義で OptionDataSource にコメントを付けると、問題なく機能することにも気付きました。

私は何を間違えましたか?

4

1 に答える 1