[英]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的所有可能選項,如下所示:
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.