2015-10-08 3 views
0

Мой код довольно прост и выведен из среды 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 и не знаю, почему это происходит.

ответ

0

Я нашел решение. Мне только пришлось вызвать метод install()GinBinder и инициализировать мой модуль BuchAnalysisModule так. Никаких других изменений не требуется.

public class ApplicationModule extends AbstractPresenterModule { 
@Override 
protected void configure() { 
    install(new BuchAnalysisModule()); 

    bindPresenter(ApplicationPresenter.class, 
       ApplicationPresenter.MyView.class, ApplicationView.class, 
       ApplicationPresenter.MyProxy.class); 
    } 
} 
0

Вы определили bean типа MyView в своем контексте? Если нет, Spring попытается создать экземпляр, который не будет работать с интерфейсом.

2 возможных способ исправить это:

  1. Определение боба надлежащего типа в контексте Spring
  2. изменения типа конструктор пары:

    BuchAnalysisPresenter(EventBus eventBus, MyViewImpl view, MyProxy proxy) 
    
+0

Я не имею Bean этого типа, определенного. Но в моем проекте есть и другие аналогичные докладчики с тем же автогенерированным кодом, и все они работают нормально. –

+0

Итак, если я изменю тип параметра на'MyViewImpl ', где бы я определил этот тип? Как показано в коде, он расширяет класс'View ', поэтому не имеет значения, какое имя я даю, оно не работает. –

+0

Вам нужно использовать класс, который реализует этот интерфейс. В моем примере MyViewImpl реализует MyView. Если у вас нет какой-либо возможной реализации класса, вы также можете просто удалить аргумент конструктора «view» и просто инициализировать его, используя: «MyView view = new MyView() {public SimplePanel getMain() {/ * сделать что-то * /}}; ' –

0

В моем случае вопрос в том, что я использовал неправильную реализацию HashMap в моем View классе, как показано ниже:

Map<String, String> map = new HashMap<String, String>(); 

Проблема была с импортными классов

Я был импорт правильного интерфейса карты, но неправильный класс HashMap

Импорт походили:

import java.util.Map; 
import com.google.gwt.dev.util.collect.HashMap; 

Я Заменил HashMap следующим, и она работала :)

import java.util.HashMap;