在我当前的项目中,我必须通过RPC调用在CellTable中呈现项目。必须动态创建列,并且在编译时列类型是未知的。
从服务器端,我发送以下类的列表以在表中定义一行:
public class TableRowDTO implements IsSerializable {
private List<IsTableItemDTO> tableItemDTOs;
public TableRowDTO() {
tableItemDTOs = new ArrayList<IsTableItemDTO>();
}
// getters & setters ...
}
每行包含一个实现IsTableItemDTO的项目,该项目是标记接口:
public interface IsTableItemDTO extends IsSerializable {}
实现类描述了要在单元格中显示的实际控件/信息,如:
public class TableDateTimeDTO extends IsTableItemDTO {
private Date valueDate;
// ... other fields not necessary for the table
}
或者:
public class TableCheckBoxDTO extends AbstractTableItemDTO {
private boolean checked;
// ... other fields not necessary for the table
}
还有:
TablePasswordDTO extends AbstractTableItemDTO {
private String valueText;
// ... other fields not necessary for the table
}
因此,在我收到带有{TableCheckBoxDTO, TableDateTimeDTO, TablePasswordDTO}
的List的情况下,我想要做的是使用相应的小部件呈现CellTable。
我见过this和this,但我没有看到如何将任何示例应用到我的案例中,特别是因为我不能使用像列这样的问题因为我手头没有 ContactInfo 。
谢谢
答案 0 :(得分:1)
您可以将标记界面IsTableItemDTO
与instanceof()
和动态广播一起使用,以使用通用Column
/ Cell
。
有两种方式:
isTableItemDTO
所属的特定子类型进行显示。 答案 1 :(得分:0)
我在之前的一个项目中使用过Jet表(https://code.google.com/p/gwt-jet/)。我相信它具有您正在寻找的功能。