【问题标题】:Is it possible to reference a field variable from .ui.xml initialized in constructor?是否可以从构造函数中初始化的 .ui.xml 引用字段变量?
【发布时间】:2015-07-22 12:28:36
【问题描述】:

我正在尝试通过 UiBinder/ui.xml 将参数传递给组合的 (registrationViewer) 构造函数。

我的View.ui.xml 看起来像这样:

    ...
    <ui:with field='registration' type='com.example.dto.RegistrationDTO'/>
    ...
    <composites:RegistrationViewer ui:field="registrationViewer" registration="{registration}"/>
    ...

我的View.java 看起来像这样:

    ...
    @UiField @Ignore public RegistrationDTO registration;
    @UiField RegistrationViewer registrationViewer;

    public View(RegistrationDTO registration) {
        this.registration = registration;
        initWidget(uiBinder.createAndBindUi(this));
    }

我的RegistrationViewer.java

    private final RegistrationDTO registration;

    @UiConstructor
    public RegistrationViewer(RegistrationDTO registration) {
        this.registration = registration;
        initWidget(uiBinder.createAndBindUi(this));
    }

然而,registration 参数的所有字段在RegistrationViewer 构造函数中都是空的。似乎 GWT 没有选择正确的 RegistrationDTO 实例并尝试创建它的新实例。

我的问题是:我想要做什么 - 有可能吗?

【问题讨论】:

    标签: java gwt


    【解决方案1】:

    @UiField 有一个provided 属性,其默认值为false,这意味着UiBinder 将创建一个实例并将其分配给该字段。如果您自己提供一个值,则将其设置为 true:

    @UiField(provided = true) RegistrationDTO registration;
    

    (顺便说一句,当你从构造函数中设置它时,我会尽量使字段final

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-11
      • 2020-09-27
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多