【问题标题】:Is it possible to reference enums in a GWT UiBinder context是否可以在 GWT UiBinder 上下文中引用枚举
【发布时间】:2011-07-11 08:43:02
【问题描述】:

我有一个如下所示的枚举

public enum MyEnum {
    A,
    B;
}

然后我有一个 UiBinder 文件,其中包含一个自定义组件,该组件有一个期望上述枚举的 setter 和 getter。 (我已经删除了

的额外代码
<ui:UiBinder ....>
    <g:HTMLPanel>
        ....
        <myNamespace:myComponent myAttribute="" />
        ....
    </g:HTMLPanel>
</ui:UiBinder>

我可以引用我的枚举并以任何方式将该值放入 myAttribute 中吗?我想要完成的是这样的

<ui:UiBinder ....>
    <ui:with field="myEnumField" type="com.example.MyEnum" />
    <g:HTMLPanel>
        ....
        <myNamespace:myComponent myAttribute="{myEnumField.A}" />
        ....
    </g:HTMLPanel>
</ui:UiBinder>

但是,我似乎无法使用 ui:with 执行此操作。我可以以任何方式做到这一点吗?

【问题讨论】:

    标签: java gwt enums uibinder


    【解决方案1】:

    在搜索了更多之后,我意识到您实际上可以执行以下操作:

    <ui:import field="com.example.MyEnum.*" />
    <g:HTMLPanel>
        ...
        <myNamespace:myComponent myAttribute="{A}" />
        ...
    </g:HTMLPanel>
    

    【讨论】:

    • 我更喜欢这个,因为您将在 Eclipse 中获得上下文突出显示/错误下划线,并且您将获得该属性的 Enum 类型的自动完成功能。这样你会更早地发现问题,并且你不会依赖字符串文字(这会鼓励错误)。
    • 我也更喜欢这个,并且现在将它用作我引用枚举的首选方法,但我觉得将我自己的答案标记为已接受的答案是一种不好的做法。 :)
    • 你确定这个语法吗?它在 2.4 中对我不起作用
    【解决方案2】:

    这是可能的。您应该能够直接将枚举传递给属性,

    <ui:UiBinder ....>
        <g:HTMLPanel>
            ....
            <myNamespace:myComponent myAttribute="A" />
            ....
        </g:HTMLPanel>
    </ui:UiBinder>
    

    MyComponent 小部件应该有一个接受 MyEnum 类型的 uiConstructor。

    @UiConstructor
    public MyComponent(MyEnum myAttribute){
    }
    

    【讨论】:

      猜你喜欢
      • 2011-03-07
      • 2017-05-03
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      相关资源
      最近更新 更多