Редакторы GWT - MaterialComboBox назначается необработанному типу редактора, но требуется параметризация типа
Я пытаюсь использовать каркас редактора GWT, чтобы я мог иметь свое мнение (SingleReplayView
) редактировать мой боб 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());
}
}
и мой класс бобов
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'
можете помочь?
1 ответ
Тип 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 был таким же, как в вашем типе компонента:
private String originalEnvironment;
Так что ваши @UiField
должен прочесть
@UiField
MaterialComboBox<String> originalEnvironment;
replayEnvironment
Редактору также понадобится такая же параметризация.