ListDataModel不可序列化==不会在GAE上运行

时间:2012-05-15 15:02:32

标签: google-app-engine jsf jsf-2

好的,我现在真的被困住了。我有一个h:datatable,获取行详细信息的唯一方法似乎是DataModel#getRowData()。遗憾的是,包装必要数据所需的ListDataModel不可序列化,因此无法在GAE上运行,我真的需要它才能工作!有没有人知道任何变通方法或某种方式使其功能。 非常感谢!

1 个答案:

答案 0 :(得分:1)

标记属性transient(以便在序列化期间跳过它)并在getter中引入延迟加载。

E.g。

private List<Item> itemList;
private transient DataModel<Item> itemModel;

public DataModel<Item> getItemModel() {
    if (itemModel == null) {
        itemModel = new ListDataModel<Item>(itemList);
    }

    return itemModel;
}

顺便提一下,有一种方法可以检索当前行。另请参阅How can I pass selected row to commandLink inside dataTable?