我试图通过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
实例并尝试创建它的新实例。
我的问题是:我想做什么 - 它甚至可能吗?
答案 0 :(得分:4)
@UiField
具有provided
属性,其默认值为false
,这意味着UiBinder将创建一个实例并将其分配给该字段。如果您自己提供值,则将其设置为true:
@UiField(provided = true) RegistrationDTO registration;
(顺便说一下,当你从构造函数中设置它时,我会尽可能地创建字段final
)