2010-04-12 17 views
1

我想我的手在新的GWT 2.0 UiBinder的能力,我有一個UI XML,看起來像這樣:GWT UIBinding找不到零參數的構造函數

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:my='urn:import:com.mystuff.mypackage'> 
<g:VerticalPanel> 
     <!-- other stuff --> 
    <my:FileUploadPanel.ValidatingFileUpload styleName="field" ui:field="fileUpload" /> 
</g:VerticalPanel> 

ValidatingFileUpload是FileUploadPanel中包含的非靜態內部類,用於擴展FileUpload GWT類。它有一個明確的零參數構造函數,只需調用super()即可。然而,當GWT啓動時,我得到這個錯誤:

00:00:18.359 [ERROR] Rebind result 'com.mystuff.mypackage.FileUploadPanel.ValidatingFileUpload' has no default (zero argument) constructors. 
java.lang.NoSuchMethodException: com.mystuff.mypackage.FileUploadPanel$ValidatingFileUpload.<init>() 

任何想法可能是錯誤怎麼回事?

+0

我還沒有能夠使用UIBinder與內部類的小部件。如果你把內部課堂拉出來,它會起作用嗎? – 2010-04-12 18:00:11

+0

對於它的價值,我得到了我需要的功能,而不必通過使用「@ UiHandler」註釋的方法來覆蓋FileUpload類。所以我想這個問題是沒有實際意義的 - 但是,我想明確地聽到如果使用這樣的內部類是否是verboten。 – aarestad 2010-04-12 18:02:41

+4

我認爲這是非靜態的內部類是問題。你能把它變成一個靜態的內部類嗎?如果它是一個非靜態類,GWT也必須創建一個外部類的對象(我的猜測),這就是事情破裂的地方。 – 2010-04-12 18:34:29

回答

3

非靜態內部類需要在其包含的類的實例中實例化。這在需要時禁止UiBinder實例化它。嘗試使用靜態嵌套類。