是否可以引用构造函数中初始化的.ui.xml中的字段变量?

时间:2015-07-22 12:28:37

标签: java gwt

我试图通过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实例并尝试创建它的新实例。

我的问题是:我想做什么 - 它甚至可能吗?

1 个答案:

答案 0 :(得分:4)

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

@UiField(provided = true) RegistrationDTO registration;

(顺便说一下,当你从构造函数中设置它时,我会尽可能地创建字段final