我正在尝试使用gwt编辑器框架,以便可以让我的视图(SingleReplayView
)编辑我的bean SingleClaimId
。
这是我的观看课:
public class SingleReplayView extends ViewWithUiHandlers<SingleReplayUiHandlers> implements SingleReplayPresenter.MyView, Editor<ReplayClaimId>
{
interface Binder extends UiBinder<Widget, SingleReplayView> {
}
public interface SingleReplayDriver extends SimpleBeanEditorDriver<ReplayClaimId, SingleReplayView> {}
protected static SingleReplayDriver driver = GWT.create(SingleReplayDriver.class);
@UiField
MaterialTextBox claimId;
@UiField
MaterialComboBox originalEnvironment;
@UiField
@Path("replayEnvironment")
MaterialComboBox replayEnvironment;
@UiField
@Path("bmsDisabled")
MaterialRadioButton bmsDisabled;
@UiField
@Path("bmsEnabledWithInjection")
MaterialRadioButton bmsEnabledWithInjection;
@UiField
@Path("bmsEnabledWithNoInjection")
MaterialRadioButton bmsEnabledWithNoInjection;
@UiField
@Path("tariffEnabled")
MaterialCheckBox tariffEnabled;
@UiField
@Path("humDisabled")
MaterialCheckBox humDisable;
@Inject
SingleReplayView(Binder uiBinder) {
initWidget(uiBinder.createAndBindUi(this));
driver.initialize(this);
}
@UiHandler("singleSubmitButton")
public void submit(ClickEvent event) {
ReplayClaimId replayClaimId = driver.flush();
MaterialToast.fireToast(replayClaimId.getClaimId());
}
}
和我的bean类
public class ReplayClaimId implements IsSerializable {
private String claimId;
private String originalEnvironment;
private String replayEnvironment;
private Boolean bmsDisabled;
private Boolean bmsEnabledWithInjection;
private Boolean bmsEnabledWithNoInjection;
private Boolean tariffEnabled;
private Boolean humDisabled;
//with setters and getters
}
当我尝试编译代码时,出现错误
The type gwt.material.design.addins.client.combobox.MaterialComboBox is assignable to the raw Editor type, but a type parameterization is required.
[INFO] [ERROR] Errors in 'SingleReplayView.java'
可以帮忙吗?
答案 0 :(得分:0)
gwt.material.design.addins.client.combobox.MaterialComboBox类型可分配给原始Editor类型,但是必须对类型进行参数化。
错误正在讨论此问题(以及其他类似字段):
@UiField
MaterialComboBox originalEnvironment;
但是字段MaterialComboBox<T>
的泛型表明它必须在正在编辑的类型T
上是泛型的。 https://gwtmaterialdesign.github.io/gwt-material-demo/apidocs-addins/gwt/material/design/addins/client/combobox/MaterialComboBox.html
在这种情况下,您希望T与您的bean类型中的T相同:
private String originalEnvironment;
因此您的@UiField
应该阅读
@UiField
MaterialComboBox<String> originalEnvironment;
replayEnvironment
编辑器也将需要相同的参数设置。