JSF会话问题

时间:2010-05-18 19:22:39

标签: session jsf datatable

我有一种情况,我有记录列表说10,000,我使用数据表,我正在使用分页,(每个显示10条记录)。我想将该列表放在会话中:

facesContext........put("mylist", mylist);

在mylist的getter中,我有

public List<MyClass> getMyList() {
    if(mylist== null){

        mylist= (List<MyClass>) FacesContext......getSessionMap().get("mylist");
    }

    return mylist;
}

现在问题是我点击分页按钮转到第二页,只显示第一个记录, 我知道我错过了一些事情,我几乎没有问题:

将列表放入会话的方式是否正确。 这是我应该在我的情况下调用列表的方式。

事先提前......

1 个答案:

答案 0 :(得分:1)

完全不同的东西:我强烈建议将那些10.000条记录放在会话范围内。这显然效率低下。如果100个用户正在访问您的数据表,那么这些记录将在每个用户的内存中重复。这毫无意义。只需将它们保留在数据库中并相应地编写SQL查询,它会准确返回要显示每个请求的行。这就是数据库的设计目标。如果数据模型设计得很好(WHERE和必要的ORDER BY子句中涉及的列的索引),那么它肯定比为每个访问者在Java内存中占用整个表更快。

您可以在this article中找到更多见解和代码示例。