Мой код довольно прост и выведен из среды Eclipse.Отсутствует ошибка конструктора или встроенного конструктора по умолчанию весна
public class BuchAnalysisPresenter extends
Presenter<BuchAnalysisPresenter.MyView, BuchAnalysisPresenter.MyProxy>
implements BuchAnalysisUiHandlers {
interface MyView extends View, HasUiHandlers<BuchAnalysisUiHandlers> {
SimplePanel getMain();
}
@ContentSlot
public static final Type<RevealContentHandler<?>> SLOT_BUCHNR = new Type<RevealContentHandler<?>>();
@NameToken(NameTokens.buchnummer)
@ProxyStandard
interface MyProxy extends ProxyPlace<BuchAnalysisPresenter> {
}
@Inject
VerlagServiceAsync verlagServiceAsync;
@Inject
BuchAnalysisPresenter(EventBus eventBus, MyView view, MyProxy proxy) {
super(eventBus, view, proxy, HomePagePresenter.SLOT_SetGraphContent);
getView().setUiHandlers(this);
}
}
Но я получаю ошибку компиляции, говоря:
Unable to create or inherit binding: No @Inject or default constructor found for de.it2media.dps.statistics.client.application.buchnranalysis.BuchAnalysisPresenter$MyView
Как вы можете видеть в коде, что есть на самом деле конструктор BuchAnalysisPresenter
и @Inject
аннотаций с ним.
Я новичок в Spring
и не знаю, почему это происходит.
Я не имею Bean этого типа, определенного. Но в моем проекте есть и другие аналогичные докладчики с тем же автогенерированным кодом, и все они работают нормально. –
Итак, если я изменю тип параметра на'MyViewImpl ', где бы я определил этот тип? Как показано в коде, он расширяет класс'View ', поэтому не имеет значения, какое имя я даю, оно не работает. –
Вам нужно использовать класс, который реализует этот интерфейс. В моем примере MyViewImpl реализует MyView. Если у вас нет какой-либо возможной реализации класса, вы также можете просто удалить аргумент конструктора «view» и просто инициализировать его, используя: «MyView view = new MyView() {public SimplePanel getMain() {/ * сделать что-то * /}}; ' –