Enums smartgwt数据源EnumField示例

Enums smartgwt数据源EnumField示例,enums,datasource,smartgwt,Enums,Datasource,Smartgwt,我试着在SmartGWT Showcase和论坛上做一些研究,但找不到答案。我还尝试了更广泛的谷歌搜索,但也找不到答案。 所以,我希望我能在这里得到一些帮助 我的“共享”文件夹中有一个enum java类: 我知道我可以创建一个DataSourceEnumField并设置valuemap,但是这些值是硬编码的,enum java类将来可以添加更多的enum。我不希望每次更新枚举时都必须更新ValueMap 因此,知道我将有一个带有下拉列表(SelectItem)的表单,我想将optionData

我试着在SmartGWT Showcase和论坛上做一些研究,但找不到答案。我还尝试了更广泛的谷歌搜索,但也找不到答案。 所以,我希望我能在这里得到一些帮助

我的“共享”文件夹中有一个enum java类:

我知道我可以创建一个DataSourceEnumField并设置valuemap,但是这些值是硬编码的,enum java类将来可以添加更多的enum。我不希望每次更新枚举时都必须更新ValueMap

因此,知道我将有一个带有下拉列表(SelectItem)的表单,我想将optionDataSource设置为enumfield中的值列表

所以,我想我是在问如何设置一个数据源来获取这个enum数据,或者绑定到这个enumjava类


这样,当我创建表单并将其绑定到另一个数据源时,我就可以创建一个SlectItem,并按照其他下拉列表的方式设置它。我只是习惯于使用绑定到对象列表的数据源,而不是枚举。

我遇到了同样的问题,我发现name类中的“Enum”确实有误导性

无论如何,即使您可以使用枚举,它对您来说也是无用的,因为您有自定义属性

但是,您可以通过迭代枚举值和填充映射来解决此问题。一种通用方法是创建如下界面:

公共接口CodeNameEnum{
字符串getCode();
字符串getName();
}
然后,让您enum实现它:

public enum PointInTimeType实现CodeNameEnum{
第一(“F”、“第一”),
开始(“S”、“开始”),
结束(“E”,“结束”),
最后(“L”、“最后”),
最小值(“最小值”、“最小值”),
最大值(“MX”、“最大值”);
私有字符串码;
私有字符串名称;
私有PointInTimeType(字符串代码、字符串名称){
this.code=代码;
this.name=名称;
}
公共字符串getCode(){
返回码;
}
公共字符串getName(){
返回名称;
}
}
最后,使用此方法:

公共类枚举映射{
公共静态映射getMapFromEnum(CodeNameEnum[]codeNameEnumArray){
Map Map=newhashmap();
用于(CodeNameEnum CodeNameEnum:codeNameEnumArray){
put(codeNameEnum.getCode(),codeNameEnum.getName());
}
返回图;
}
公共静态void main(字符串[]args){
Map Map=getMapFromEnum(PointInTimeType.values());
系统输出打印项次(map);
}
}
因此,您可以对包含代码和名称的每个枚举使用此方法

否则,如果是单独的情况,请执行以下操作:

Map Map=newhashmap();
对于(PointInTimeType项:PointInTimeType.values()){
map.put(item.getCode(),item.getName());
}
返回图;
public enum PointInTimeType {

FIRST("F", "First"),
START("S", "Start"),
END("E", "End"),
LAST("L", "Last"),
MIN("MI", "Minimum"),
MAX("MX", "Maximum");

private String code;
private String name;

private PointInTimeType(String code, String name) {
    this.code = code;
    this.name = name;

}

public String getCode() {
    return code;
}

public String getName() {
    return name;
}