1

具有以下内容:

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中没有对应的字段”

“Field pager 在模板文件 PromotionTableComposite.ui.xml 中没有对应的字段”。

当我运行项目时,出现以下运行时错误:

java.lang.AssertionError: 'provided = true' 的 UiField 寻呼机为空

我做错了什么?我检查了构建属性,使其包含所有源文件并排除非(因此 ui.xml 文件与 java 文件一起包含)。

4

1 回答 1

3

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

    ...

}
于 2013-02-20T22:34:04.573 回答