以下是项目中使用的总文件数。它给出了这些错误
[ERROR] [cricketscore] - Deferred binding failed for 'test.client.UserDashboard.MyUiBinder'; expect subsequent failures
和
[ERROR] [cricketscore] - Unable to load module entry point class test.client.DashBoard (see associated exception for details).
请帮我解决问题。
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);
}
}
答案 0 :(得分:2)
您的代码中有有冲突的信息:@UiConstructor
和@UiFactory
(实际上没有冲突,有优先顺序,但它可以是让开发人员感到困惑,即你)。
UiBinder比@UiFactory
更喜欢@UiConstructor
,而您的工厂没有参数,因此XML中的teamNames
属性暂时映射到setTeamNames
setter,哪个不存在,因此“Class CricketScores没有合适的setTeamNames()方法”错误。
问题在您的代码中是概念性的:您的UserDashboard
是使用传递给CricketScores
窗口小部件的团队名称列表构建的,因此窗口小部件不应该有{{1} XML中的属性。
答案 1 :(得分:0)
我得到了相同的错误并且uiField(provided = true)变为null但是当我在构造函数中创建相应组件的对象时它得到了解决