我无法理解如何在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)
答案 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();
}
};