gpt4 book ai didi

java - 基于 EnumSet 在 GWT ValueListBox 中设置可接受值的列表?

转载 作者:行者123 更新时间:2023-12-01 13:48:05 26 4
gpt4 key购买 nike

鉴于我将此实体作为编辑器链的一部分:

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 rendering all possible values of the Enum

EnumSet 可以包含 1 到 4 个可能的选项,具体取决于特定的实体。有没有办法让ValueListBox只渲染EnumSet中的选项,然后将值保存在commissionType中?

请记住,我还想设置commissionType 的值。

最佳答案

有两种方法可以解决:

1.) 如果您可以直接访问 CommissionEditor,则在其中创建一个 setter,并在编辑实体时调用它:

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

}

当你调用driver.edit(entity);时这样调用它:

commissionEditor.setAcceptableValues(commission.getCommissionTypes());

2.) 您可以扩展 ValueAwareEditor 而不是扩展 Editor 界面。并在 setValue() 方法中使用相应的值调用 setAcceptableValues

方法 2 可能是更简洁的方法。

关于java - 基于 EnumSet 在 GWT ValueListBox 中设置可接受值的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20193631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com