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

Is it possible to reference a field variable from .ui.xml initialized in constructor?

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

我的问题是:我正在尝试做什么 - 这可能吗?

@UiField有一个provided属性,默认值为false,意思是UiBinder会创建一个实例,赋给字段。如果您自己提供一个值,则将其设置为 true:

@UiField(provided = true) RegistrationDTO registration;

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