GWT:制作一列自定义单元格

时间:2015-10-12 10:55:51

标签: java gwt

我无法理解如何在GWT中构建列。我们假设我ArrayList Book,并希望在CellTable中列出它们。一个特殊要求是每个Book都有ArrayList Page个,我想根据Page列表构建自己的HTML代码。

tutorial on custom cells解释了如何创建一个String的单元格,然后返回String。不过,我想以Book为格式,然后获取String(通过处理ArrayList<Page>的{​​{1}})。出于这个目的,我几乎复制了单元格的示例代码,只是我将Book替换为String

我无法弄清楚如何使用此单元格向我的Book添加列。使用CellTable将获取单元格TextColumn方法生成的HTML代码并将其转义。我的最后一次尝试是构建render,但Column<PagesCell, String>的构造函数需要一个实现Column的对象,而我的实现Cell<String>。我究竟做错了什么?最有可能的是,我对GWT中单元格和列的工作原理有一些基本的误解。下面,您可以看到我想到的代码,但哪些代码无效。

Cell<Book>

此代码产生错误

  列中的列(com.google.gwt.cell.client.Cell)无法应用于(com.google.gwt.cell.client.Cell)

1 个答案:

答案 0 :(得分:0)

您需要将一个单元格传递给列构造函数。之后,无需在getValue()方法中初始化另一个单元对象。

您需要通过扩展SafeHtmlCell来创建新的Cell,并传递一个表示您要呈现的HTML的字符串。然后在你的专栏中:

Column<Book, SafeHtml> pagesColumn = new Column<Book, SafeHtml>(new PagesCell()) {
    @Override
    public SafeHtml getValue(Book book) {
        SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder();
        // create your HTML here - not in the cell, using your Book object
        return safeHtmlBuilder.toSafeHtml();
    }
};