Редакторы 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 Редактору также понадобится такая же параметризация.

Другие вопросы по тегам