在Java中从一个对象中批量生成50个



我在我的应用程序中遇到了一个问题。我想在我的应用程序中实现一种分页功能,但由于现有的行为,我无法在我的应用程序中实现分页的标准方式前进。

问题:我有一个包含所有数据的bean对象。我想设计一个逻辑,将物体分成50个一组。所以考虑一下,如果我的对象中有5000个配置,我将首先将其分解为前50个,并将在UI上显示相同的配置。此外,我将不得不继续这个过程,将剩余的450个配置分成50个批次。谁能建议我如何继续这个逻辑??

我的方法:在我现有的代码中,我检查对象的大小。如果大小数据。如果大于50。我将一面旗帜设为真旗。此标志将在JSP/JS中使用,以重新触发DOJO调用以再次获取数据。请查看代码片段

public ActionForward sdconfigLoadServiceGroups(ActionMapping actionMapping,
        ActionForm actionForm, HttpServletRequest servletRequest,
        HttpServletResponse servletResponse) {
    String groupUniqueId = servletRequest.getParameter("groupUniqueId");
    Boolean retriggerRequestFlag = false;
    // Get the ui group
    HashMap sdConfigDetailsHashMap = (HashMap) ((DynaActionForm) actionForm).get(SD_CONFIG_DETAILS);
    TreeMap sdConfigTreeMap = (TreeMap) sdConfigDetailsHashMap.get("SDConfigTree");
    Boolean viewOnly=(Boolean) sdConfigDetailsHashMap.get("ViewOnly");
    Order order = orderManager.getOrder((Long) sdConfigDetailsHashMap.get("OrderId"));
    SDConfigUITab sdConfigUITab = sdConfig2Manager.getTabByGroupUniqueId(groupUniqueId, sdConfigTreeMap);
    SDConfigUIGroup sdConfigUIGroup = sdConfig2Manager.getGroupByGroupUniqueId(servletRequest.getParameter("groupUniqueId"), sdConfigUITab);
    //TODO: Adding logger to check the total number of sections
    logger.info("All Sections==="+sdConfigUIGroup.getSections());
    logger.info("Total Sections?? "+sdConfigUIGroup.getSections().size());
    long size = Long.valueOf(sdConfigUIGroup.getSections().size());
    if (size != 0 && size > 50) {
        sdConfigUIGroup  = loadDynamicConfigs(sdConfigUIGroup);
        retriggerRequestFlag = true;
    }
    servletRequest.setAttribute("retriggerRequest", retriggerRequestFlag); 
    servletRequest.setAttribute("groupUniqueId", servletRequest.getParameter("groupUniqueId"));
    servletRequest.setAttribute("sdConfigUIGroup", sdConfigUIGroup);
    servletRequest.setAttribute("sdConfigUITab", sdConfigUITab);
    servletRequest.setAttribute("sdConfigUITabId", sdConfigUITab.getTabId());
    servletRequest.setAttribute("currentOrderId", order.getOrderId());
    servletRequest.setAttribute("viewOnly", viewOnly);

    return actionMapping.findForward("sdconfigLoadServiceGroups");
}
 public SDConfigUIGroup loadDynamicConfigs(SDConfigUIGroup sdConfigUIGroup) {
     //logic for breaking into batches of 50 goes here
 }
}

欢迎任何建议:)谢谢!!

保持跟踪,

  • 在会话中设置startIndex和fetchCount(取决于生命周期)
  • 在你的loadDynamicConfigs中,迭代loadDynamicConfigs并每次拉50个节。
  • 下一次当用户点击"下一步"(如果可用)时,他们使用最新的startIndex和fetchSize来拉下一批
  • 注意,你的"Next"链接/按钮在页面上应该调用另一个映射方法来进行分页。

相关内容

最新更新