gpt4 book ai didi

java - 如何从 BeanModelMarker 派生 BaseModel 或 BeanModel

转载 作者:行者123 更新时间:2023-12-01 15:28:30 27 4
gpt4 key购买 nike

我按照说明操作:

  1. 创建 bean。此 bean 用于使用 RestyGWT 从服务器传输到客户端的枚举。

    public enum Mode{
    MODIFY,
    EDIT,
    DELETE,
    CREATE
    }
  2. 定义 bean 上的标记。

    @BEAN(Mode.class)
    static public class ModelMarker implements BeanModelMarker { }
  3. (转述 GXT 博客中的声明)现在在任何数据组件上使用 BeanModelMarker。

    所以,我创建了一个组合框。

    static private ComboBox<ModelMarker> propertyTypeComboBox =
    new ComboBox<ModelMarker>();

    糟糕,ComboBox 不接受 BeanModelMarker 作为模型类型。这肯定是错误的,因为它还没有被 GWT 创建。

那么我该如何处理 GWT 创建的实例呢?

static ModelMarker beanModel =
GWT.create(ModelMarker.class);

我找不到任何文献可以明确告诉我在定义 BeanModelMarker 后如何处理它。我该如何使用它?

我想知道需要做什么来定义 Bean 或基本模型,以便我可以在数据驱动组合框中使用枚举。

我是否以正确的方式提出有关 BeanModelMarker 的问题?它与我尝试创建枚举驱动的组合框相关吗?

最佳答案

一些想法:

这里是 GXT 论坛上关于包装的讨论 enum组合框中的类型。 http://www.sencha.com/forum/showthread.php?67317-Enum-based-ComboBox 。使用了多种方法 - 在该线程中,我采用了制作 EnumWrapper 的方法,以及一些静态便捷方法来创建 List<EnumWrapper<MyEnum>>提供给组合框 ListStore 的集合。我选择这种方法而不是 BeanModel 方法的主要原因之一是我需要我的枚举具有 i18n 功能,并且不希望枚举本身包含 i18n 逻辑。

与您的问题更相关,将 java 对象转换为 BeanModel 的正确方法是使用 BeanModelFactory实例由 BeanModelLookup.getFactory(Mode.class) 提供。 ModelMarker只是一个接口(interface),无法实现ModelData ,所以你的ComboBox<ModelMarker>声明实际上没有任何意义。请记住,使用这种方法意味着您的 Mode枚举需要公开 setter/getter ,因此 BeanModel生成代码可以发挥其反射魔力(如 http://www.sencha.com/forum/showthread.php?67317-Enum-based-ComboBox&p=332996&viewfull=1#post332996 )。

ComboBox<BeanModel> modeCombo = new ComboBox<BeanModel>();
ListStore<BeanModel> store = new ListStore<BeanModel>();

// this next line might need ModelMarker.class instead, its been a while
BeanModelFactory modeFactory = BeanModelLookup.get().getFactory(Mode.class);


// either add items one at a time
Mode mode = Mode.EDIT;
store.add(modeFactory.createModel(mode));

// or add a collection
store.add(modeFactory.createModel(Arrays.asList(Mode.values()));

关于java - 如何从 BeanModelMarker 派生 BaseModel 或 BeanModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9878359/

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