2013-05-01 29 views
3

我得到一個奇怪的錯誤,使用輔助注射時,我不能讓過去:GIN AssistedInject問題「無法創建或繼承綁定」

[DEBUG] [project] - Rebinding com.gwtplatform.mvp.client.DesktopGinjector 
[DEBUG] [project] - Invoking generator com.google.gwt.inject.rebind.GinjectorGenerator 
    [ERROR] [project] - Factory com.jorsek.editor.gin.EditorClientFactory could not be created 
    [ERROR] [project] - Error injecting com.jorsek.editor.gin.EditorClientFactory: Unable to create or inherit binding: No @Inject or default constructor found for com.jorsek.editor.gin.EditorClientFactory 

路徑所需的節點:

融爲一體。 projectname.client.application.resourceworkspace.ResourceWorkspacePresenter [com.gwtplatform.mvp.client.gin.AbstractPresenterModule.bindPresenter(AbstractPresenterModule.java:122)] - > com.jorsek.editor.gin.EditorClientFactory [@Inject constructor of com。 projectname.client.application.resourceworkspace.ResourceWorkspacePresenter]

這裏是我擁有的一切設置:

我廠:

public interface EditorClientFactory { 

/** 
* Create a new DOMModel via assisted injection initializing the model 
* with the document entity and it's DOM document content. 
* 
* @param document 
* @param domDocument 
* @return 
*/ 
public DOMModel create(Entity document, Document domDocument); 
} 

我的模塊:

public class EditorClientModule extends AbstractGinModule { 

@Override 
protected void configure() { 

    install(new GinFactoryModuleBuilder().build(EditorClientFactory.class)); 

    bind(DOMModel.class).to(SyncedDOMModel.class); 
} 

} 

com.jorsek.editor.impl.SyncedDOMModel:

public class SyncedDOMModel implements DOMModel { 



@Inject 
private SyncedDOMModel(){} /* For GIN/GUICE */ 

@AssistedInject 
public SyncedDOMModel(CollabClient client, CollabClientFactory collabFactory, @Assisted Entity ref, @Assisted Document domDoc){ 
    } 
} 

這就是我試圖注入我的工廠使用說明:

@AssistedInject 
public ResourceWorkspacePresenter(final EventBus eventBus, final MyView view, final MyProxy proxy, APIService apiService, EditorClientFactory editorFactory, @Assisted EntityLocator entityLocator) { 
    super(eventBus, view, proxy, ApplicationPresenter.TYPE_SetMainContent); 


    this.editorFactory = editorFactory; 
    this.apiService = apiService; 
    System.out.println("E Locator: " + entityLocator); 

} 

而且這是我想使用我廠(千萬別這雖然遠):

editorFactory.create(doc, domDoc); 

有人能看到爲什麼這會發生?

我正在使用GWTP RC2,如果有幫助。

感謝,

凱西

回答

4

你的代碼是不正確(我不知道這是否會解決你的問題,但它是一個開始):你不bind(DOMModel.class)而是應該告訴工廠:

install(new GinFactoryModuleBuilder() 
    .implement(DOMModel.class, SyncedDOMModel.class) 
    .build(EditorClientFactory.class)); 
+0

您真棒!這是問題的重要組成部分,最終導致我需要做的事情。謝謝! – 2013-05-01 16:44:53