Session JSF会话问题

Session JSF会话问题,session,jsf,datatable,Session,Jsf,Datatable,我有一个记录列表,比如10000条,我使用datatable,我使用分页(每个显示10条记录)。我想在会议中列出如下清单: facesContext........put("mylist", mylist); 在mylist的getters中,我有 public List<MyClass> getMyList() { if(mylist== null){ mylist= (List<MyClass>) FacesContext......get

我有一个记录列表,比如10000条,我使用datatable,我使用分页(每个显示10条记录)。我想在会议中列出如下清单:

facesContext........put("mylist", mylist);
在mylist的getters中,我有

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

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

    return mylist;
}
公共列表getMyList(){
if(mylist==null){
mylist=(列表)FacesContext……getSessionMap().get(“mylist”);
}
返回mylist;
}
现在的问题是,每当我点击分页按钮进入第二页时,只会显示第一条记录, 我知道我错过了一些东西,我有几个问题:

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


提前…

完全不同:我强烈建议不要将那10000条记录放在会话范围内。这显然是低效的。如果有100个用户访问您的数据表,那么这些记录将在内存中为每个用户复制。这毫无意义。只需将它们留在数据库中,并相应地编写SQL查询,这样它就可以准确地返回每个请求要显示的行。这就是DB设计的目的。如果数据模型设计良好(在
WHERE
中涉及的列上建立索引,如果需要
orderby
子句),那么它肯定比为每个访问者在Java内存中拖拽整个表更快


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

我们可以看看JSF代码吗?我们需要知道您的分页是如何实现的。Thks Balusc,还有一个问题,即使我将要从数据库中获取的行数限制为50行。假设我的最大用户数也低于10。如果我使用分页,即每页10条记录,单击下一个分页按钮将导致列表为空?我如何克服这个问题?我无法实现TOmaHawk的属性。谢谢。然后,要么修复导致无法实现的问题,以便无论如何都可以实现它,要么将bean放入会话范围。唯一需要注意的是,这反映了同一会话中的所有选项卡/窗口。在某些情况下,这可能是一个阻碍。