java - JSP 连续滚动 在 session 中存储页面变量

标签 java jakarta-ee web pagination

我有一个当前正在工作的连续滚动分页,因为 Http 是无状态的,并且无法从 HttpRequest 获取以前的数据集,将页面变量存储到用户 session 中是否是一个好习惯? (比如添加最后加载的内容的 id,以便在下一次加载或下一个请求时它将加载下一个元素)(假设页面是通过 AJAX 加载的)我已经这样实现了。

例如,如果用户搜索某个名称,它将转到执行此操作的某个操作。

paginationHelperBean = new PaginationHelper();

        if(page == 0 && name != null){
            paginationHelperBean.setCurrent_page(0);
        } else {
            paginationHelperBean.setCurrent_page(page);
        }

        //Set the paginationBean for display references in JSP later
        paginationHelperBean.setPer_page(RESULTS_PER_PAGE);
        paginationHelperBean.setTotal_count(profileService.countSearchProfiles(name, paginationHelperBean.getCurrent_page(), RESULTS_PER_PAGE));
        paginationHelperBean.setNumber_of_pages();


    session.put("profileSearchKey", this.name);
    session.put("profileSearchPage", page);

当用户请求另一个片段或数据集时,它将执行先前加载内容中的下一个项目。

String key = (String)session.get("profileSearchKey");

int page = (Integer)session.get("profileSearchPage")+1;
profiles = profileService.searchProfiles(key, page, RESULTS_PER_PAGE);
session.put("profileSearchPage", page);

所以我的问题是,在 session 中存储页面相关变量以进行分页(例如,连续滚动的搜索分页?)是一种不好的做法吗?

最佳答案

在我看来,无限滚动应该与使用任何ajax调用来获取附加内容没有什么不同,你有一些东西可以触发附加数据的获取(用户滚动到页面底部),当它到达时你会显示它。另外,您可以使用获取的最后页码更新 JavaScript 变量,以便当用户再次滚动到页面底部时,您可以获取下一页(无需将此信息存储在 session 变量中,例如 ajax 调用/nextPage.jsp?page_number=[valueFromJavaSript])。

将此与将最后获取的页面存储在 session 变量中进行对比。想象一下,您的用户离开无限滚动页面并返回,您预计会发生什么?当您导航回 jsp 页面时,让该页面重置页码的 session 变量,以便后续的 ajax 调用获取正确的页码。 另外,如果您添加多个无限滚动页面,您将在 session 中存储多个“当前页面”。

在提交答案之前,我想看看其他人是如何做的,我很确定 Slashdot 曾经有无限滚动功能,不幸的是它现在有一个下一个按钮。但我发现了一篇文章《30+无限滚动网站的伟大例子》here 。我使用 fiddler ( http://www.fiddler2.com/fiddler2/ ) 检查它们是否在请求中传递页码(即不将其存储在 session 中),我检查的是(页码、偏移量或类似的内容,但信息是清楚地包含在请求中)。

关于java - JSP 连续滚动 在 session 中存储页面变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15312607/

相关文章:

java - 跨平台 git : possible strategies to handle platform specific files

java - JPA 的后写缓存

java - 在 jetty 热部署简单的应用程序

Java Web 开发入门

javascript - HTML/CSS float left 自动填充空白

java - Akka Future 线程永远不会被释放

jakarta-ee - 容器管理的身份验证,处理当前登录的用户

java - 通过java打开需要认证的网页

forms - Web 表单生成器、开源、拖放

java - JMenuItem与exe中的助记符重叠