以下内容:
public class PromotionTableComposite<T extends Promotion> extends Composite {
@UiField(provided=true)
protected CellTable<T> displayTable;
@UiField(provided=true)
protected SimplePager pager;
和
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:c="urn:import:com.google.gwt.user.cellview.client">
<g:DockLayoutPanel
unit="EM">
<!-- DataGrid. -->
<g:center>
<c:CellTable
ui:field='displayTable'/>
</g:center>
<!-- Pager. -->
<g:south
size="3">
<g:HTMLPanel>
<table
style="width:100%">
<tr>
<td
align='center'>
<c:SimplePager
ui:field='pager'/>
</td>
</tr>
</table>
</g:HTMLPanel>
</g:south>
</g:DockLayoutPanel>
</ui:UiBinder>
Eclipse给了我错误:
“字段displayTable在模板文件PromotionTableComposite.ui.xml中没有对应字段”
“字段寻呼机在模板文件PromotionTableComposite.ui.xml中没有相应的字段”。
当我运行项目时,我得到以下运行时错误:
java.lang.AssertionError:带有'provided = true'的UiField寻呼机为空
我做错了什么?我检查了构建属性,以便它包含所有源文件并排除非(因此ui.xml文件包含在java文件旁边)。
答案 0 :(得分:3)
我的猜测是,在您的构造函数中,您没有在displayTable
之前初始化pager
和initWidget(uiBinder.createAndBindUi(this));
。
private static PromotionTableCompositeUiBinder uiBinder =
GWT.create(PromotionTableCompositeUiBinder.class);
@UiField(provided=true)
CellTable<T> displayTable;
@UiField(provided=true)
SimplePager pager;
public PromotionTableComposite(){
this.displayTable = new CellTable<T>();
this.pager = new SimplePager();
initWidget(uiBinder.createAndBindUi(this));
...
}