簡體   English   中英

在基於EnumSet的GWT ValueListBox中設置可接受值的列表嗎?

[英]Set the list of acceptable values in a GWT ValueListBox based on an EnumSet?

假設我將此實體作為編輯鏈的一部分:

public class Commission implements Serializable
{   

    private EnumSet<CommissionType> commissionTypes;
    private CommissionType type; // must exist in commissionTypes

    private String value;

    public Commission()
    {

    }
}

和這個編輯器:

public class CommissionEditor extends Composite implements Editor<Commission>
{
    private static CommissionEditorUiBinder uiBinder = GWT.create(CommissionEditorUiBinder.class);

    interface CommissionEditorUiBinder extends UiBinder<Widget, CommissionEditor>
    {
    }

    @UiField(provided = true)
    ValueListBox<CommissionType> type = new ValueListBox<CommissionType>(new AbstractRenderer<CommissionType>()
    {
        @Override
        public String render(CommissionType object)
        {
            return object == null ? "" : object.toString();
        }
    });

    @UiField
    TextBox value;

    public CommissionEditor()
    {
        type.setAcceptableValues(Arrays.asList(CommissionType.values()));

        initWidget(uiBinder.createAndBindUi(this));
    }

}

目前,ValueListBox呈現CommissionType的所有可能選項,如下所示:

ValueListBox呈現枚舉的所有可能值

EnumSet可能包含1到4個可能的選項,具體取決於特定的實體。 有沒有一種方法可以使ValueListBox僅呈現EnumSet中的選項,然后將值保存在CommissionType中?

請記住,我也要設置佣金類型的值。

有兩種解決方法:

1.)如果您可以直接訪問CommissionEditor則可以在其中創建一個setter,在編輯實體時調用它:

public void setAcceptableValues(List<CommissionType> values) {
    type.setAcceptableValues(values);

}

並在調用driver.edit(entity);時這樣稱呼它driver.edit(entity);

commissionEditor.setAcceptableValues(commission.getCommissionTypes());

2.)除了擴展Editor接口,您還可以擴展ValueAwareEditor,並在setValue()方法中調用具有相應值的setAcceptableValues

方法2可能是更清潔的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM