GWT& Eclipse:UiBinder - Field在模板文件中没有相应的字段

时间:2013-02-20 17:21:31

标签: eclipse gwt field uibinder

以下内容:

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文件旁边)。

1 个答案:

答案 0 :(得分:3)

我的猜测是,在您的构造函数中,您没有在displayTable之前初始化pagerinitWidget(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));

    ...

}