2013-02-26 3 views
1

Vous trouverez ci-dessous le nombre total de fichiers utilisés dans le projet. Il donne ces erreursLa liaison différée a échoué GWT à l'aide d'uibinder

[ERROR] [cricketscore] - Deferred binding failed for 'test.client.UserDashboard.MyUiBinder'; expect subsequent failures 

et

[ERROR] [cricketscore] - Unable to load module entry point class test.client.DashBoard (see associated exception for details). 

S'il vous plaît me aider à résoudre le problème en elle.

Cricketscore.gwt.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    When updating your version of GWT, you should also update this DTD reference, 
    so that your app can take advantage of the latest GWT module capabilities. 
--> 
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.0//EN" 
    "http://google-web-toolkit.googlecode.com/svn/tags/2.5.0/distro-source/core/src/gwt-module.dtd"> 
<module rename-to='cricketscore'> 
    <!-- Inherit the core Web Toolkit stuff.      --> 
    <inherits name='com.google.gwt.user.User'/> 

    <!-- Inherit the default GWT style sheet. You can change  --> 
    <!-- the theme of your GWT application by uncommenting   --> 
    <!-- any one of the following lines.       --> 
    <inherits name='com.google.gwt.user.theme.clean.Clean'/> 
    <!-- <inherits name='com.google.gwt.user.theme.standard.Standard'/> --> 
    <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> --> 
    <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>  --> 

    <!-- Other module inherits          --> 

    <!-- Specify the app entry point class.       --> 
    <entry-point class='test.client.DashBoard'/> 

    <!-- Specify the paths for translatable code     --> 
    <source path='client'/> 
    <source path='shared'/> 

</module> 

Dashboard.java

package test.client; 

import com.google.gwt.core.client.EntryPoint; 
import com.google.gwt.user.client.ui.RootPanel; 

public class DashBoard implements EntryPoint{ 

    @Override 
    public void onModuleLoad() { 
     RootPanel.get().add(new UserDashboard()); 
    } 
} 

UserDashboard.ui.xml

<!-- UserDashboard.ui.xml --> 

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' 
    xmlns:g='urn:import:com.google.gwt.user.client.ui' 
    xmlns:my='urn:import:test.client' > 

    <g:HTMLPanel> 
    <my:CricketScores ui:field='scores' teamNames='AUS, SAF, WA, QLD, VIC'/> 
    </g:HTMLPanel> 
</ui:UiBinder> 

CricketScores.java

package test.client; 

import com.google.gwt.uibinder.client.UiConstructor; 
import com.google.gwt.user.client.ui.Composite; 


public class CricketScores extends Composite{ 

    public @UiConstructor CricketScores(String teamNames) { 
      this(teamNames.split("[, ]+")); 
     } 

    public CricketScores(String... teamNames) { 
     // TODO Auto-generated constructor stub 
    } 
} 

UserDashboard.java

package test.client; 

import com.google.gwt.core.client.GWT; 
import com.google.gwt.uibinder.client.UiBinder; 
import com.google.gwt.uibinder.client.UiFactory; 
import com.google.gwt.user.client.ui.Composite; 
import com.google.gwt.user.client.ui.Widget; 

public class UserDashboard extends Composite { 
     interface MyUiBinder extends UiBinder<Widget, UserDashboard>{} 
     private static final MyUiBinder uiBinder = GWT.create(MyUiBinder.class); 

     private final String[] teamNames; 

     public UserDashboard(String... teamNames) { 
     this.teamNames = teamNames; 
     initWidget(uiBinder.createAndBindUi(this)); 
     } 

     @UiFactory CricketScores makeCricketScores() { 
     return new CricketScores(teamNames); 
     } 
    } 
+2

Et la « ... exception associée ... » est là? Les exceptions sont –

+0

java.lang.reflect.InvocationTargetException à sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) à sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java : 25) à java.lang.reflect.Method.invoke (Method.java:597) à com.google.gwt.dev.shell.ModuleSpace.onLoad (ModuleSpace.java:406) à com.google.gwt.dev. shell.OophmSessionHandler.loadModule (OophmSessionHandler.java:200) at com.google.gwt.dev.shell.BrowserChannelServer.processConnection (BrowserChannelServer.java:5 – Mani

+0

Est-ce l'exception * entière *? Essayez de commenter 'this (teamNames.split ("[,] +")); 'dans le constructeur –

Répondre

2

Vous avez conflit informations dans votre code: un @UiConstructor et un @UiFactory (pas contradictoires en fait, il y a un ordre de priorité, mais il peut être source de confusion pour le développeur, à savoir que vous).

UiBinder préféreront la @UiFactory sur la @UiConstructor, et votre usine n'a pas d'argument, de sorte que l'attribut teamNames de votre XML est provisoirement mis en correspondance avec un setter setTeamNames, qui n'existe pas, d'où la « classe CricketScores n'a pas approprié La méthode setTeamNames() " erreur.

Le problème est d'ordre conceptuel dans votre code: votre UserDashboard est construit avec une liste de noms d'équipe qu'il passe au widget CricketScores, de sorte que ce widget ne doit pas avoir un attribut teamNames dans le fichier XML.

+1

thanx man .... savez-vous un site pour uifactory et uiconstructor, sauf site google-developers .... ils ont donné très limité à propos de ces concepts – Mani

0

Je recevais même erreur et uiField (à condition = true) devenait nulle, mais il a obtenu résolu lorsque je créé objet de composant respectif dans le constructeur

Questions connexes