如何在没有UIBINDER的情况下使用GWT 2.7.0使用CellTable.Style



我几周前加入了一个GWT应用程序项目。该代码库始于2009年。我试图用celltable替换弹性,以便可以利用可排序的列。该项目中当前版本的GWT为2.7.0,但是浏览代码,看起来仍然使用了一些过时的功能。我是GWT的新手,我可能错了。

到目前为止,事情在功能上都很好。但是,GWT似乎是我试图更新CSS的尝试。我使用GWT Dynatablerf样本作为模型,将CSS添加到Celltable。timeslotwidget使用CellTable.Style:

  interface TableResources extends CellTable.Resources {
    @Override
    @Source(value = {CellTable.Style.DEFAULT_CSS, "CellTablePatch.css"})
    CellTable.Style cellTableStyle();
  }

然后将其应用于这样的细胞:

 table = new CellTable<TimeSlotListWidget.ScheduleRow>(ROWS_IN_A_DAY,
        GWT.<TableResources> create(TableResources.class));

我试图在我的代码中使用这种方法。我什至从值列表中省略了CellTable.Style.DEFAULT_CSS,并创建了自己的CSS样式表,该表作为GWT CellTable的副本开始

我注意到GWT TimesLotlistWidget示例具有带有UIBINDER的UI.xml文件。我的项目目前不使用Uibinder。

当我运行代码时,页面上插入一个<style>块,似乎是标准的GWT CellTable.css。然后直接在那之后,我的CSS插入了另一个<style>块。我的CSS并没有超越标准的GWT CSS。

如何防止gwt celltable.css插入?为什么要插入?

问题是,在您的代码中,您重复使用CellTable.Style,并且两个不同的客户端绑定使用了相同的类型,但每个客户端都将自己的CSS绑定到它。

相反,扩展CellTable.Style接口,然后在您的捆绑中使用它

interface MyCellTableStyle extends CellTable.Style {}
interface TableResources extends CellTable.Resources {
  @Override
  @Source(value = {CellTable.Style.DEFAULT_CSS, "CellTablePatch.css"})
  MyCellTableStyle cellTableStyle();
}

最新更新