• Thymeleaf 多个选项卡如何分页?亲后端没有思路


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 大智科技 2024-04-02 14:10 采纳率: 0% 浏览 7 首页/ 编程语言 / Thymeleaf 多个选项卡如何分页?亲后端没有思路 java前端后端 thymeleaf 选项卡如何分页 问题1:多个选项卡,然后每个选项卡都有列表要分页,我在下面加了统一的分页,但是分页数据根据每次点击的不同选项卡数据会变动,局部刷新 return "project::main-content0";只能定位列表元素局部刷新,无法定位分页数据刷新,我还不想再写一个方法,感觉一个方法能解决,但是自己又没啥思路,希望老司机指导下思路,邮箱757720404@qq.com。 详情看后端分页查询数据,“//重点 :project html页面名称” 这里 后端 /** * 跳转评审管理查询页面,默认查询状态为0的草稿数据(加载页面没有任何问题) * @return */ @RequiresPermissions("system:project:view") @GetMapping() public String project(ModelMap mmap, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "1") int pageSize) { //查询状态为0的全部项目 try { BusinessProject businessProject = new BusinessProject(); businessProject.setState("0"); PageHelper.startPage(pageNum,pageSize);//关键 List businessProjects = businessProjectService.selectBusinessProjectList(businessProject); log.info("查询状态为0的全部项目businessProjects:"+businessProjects); mmap.put("Projectslist0",businessProjects); PageInfo pageInfo = new PageInfo<>(businessProjects); mmap.put("pageInfo0",pageInfo); System.out.println("查询0分页实体类: "+pageInfo.toString()); } catch (Exception e) { throw new RuntimeException("审核评审项目列表出错,错误信息:"+e); } return "project"; } /** * 分页查询数据 * @param mmap * @param state * @return */ @RequiresPermissions("system:project:list") @GetMapping("/ByStatelist/{state}") public String aaa(ModelMap mmap, @PathVariable String state, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "1") int pageSize) { try { BusinessProject businessProject = new BusinessProject(); businessProject.setState(state); log.info("根据状态查询实体类"+businessProject); //分页查询 设置分页参数 PageHelper.startPage(pageNum,pageSize);//关键 List list = businessProjectService.selectBusinessProjectList(businessProject); PageInfo pageInfo = new PageInfo<>(list); //分页完成 System.out.println("分页实体类: "+pageInfo.toString()); //根据选项卡不同,局部刷新不同的选项卡,但是分页前端是统一的. if(businessProject.getState().equals("0")){ mmap.put("Projectslist0",list); mmap.put("pageInfo",pageInfo); //重点 :project html页面名称 main-content0 元素id thymeleaf根据元素id 刷新数据,但是只能定位列表,无法定位分页,所以我的分页数据不更新,但是这个方法已经把分页数据携带上了,不想单独再给分页写一个方法,去刷新。 return "project::main-content0"; } else if (businessProject.getState().equals("1")) { mmap.put("Projectslist1",list); mmap.put("pageInfo",pageInfo); return "project::main-content1"; }else if (businessProject.getState().equals("2")) { mmap.put("Projectslist2",list); mmap.put("pageInfo",pageInfo); return "project::main-content2"; }else if (businessProject.getState().equals("3")) { mmap.put("Projectslist3",list); mmap.put("pageInfo",pageInfo); return "project::main-content3"; } log.info("根据状态查询list: "+list); return "评审项目,局部刷新数据错误,!"; } catch (Exception e) { throw new RuntimeException(e); } } 前端
    草稿
    项目详情

    操作
    待审核
    项目详情

    操作
    已审核
    项目详情

    操作
    已撤销
    项目详情

    操作
    展开全部 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    4条回答 默认 最新

    • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-02 14:10
      关注

      下午好🌅🌅🌅
      本答案参考ChatGPT-3.5

      在Thymeleaf中处理多个选项卡的分页可以通过以下步骤实现:

      1. 在后端控制器中,根据选项卡的不同状态查询对应的数据,并使用Thymeleaf将数据传递给前端页面。

      2. 在前端页面中,定义不同选项卡对应的区域,并在每个区域中添加对应的分页数据。

      3. 使用JavaScript或jQuery监听选项卡的点击事件,在点击选项卡时将对应的分页数据加载到页面中。

      解决方案如下:

      1. 后端控制器中修改代码:
      @GetMapping("/ByStatelist/{state}")
      public String aaa(ModelMap mmap, @PathVariable String state, @RequestParam(defaultValue = "1") int pageNum,
                        @RequestParam(defaultValue = "1") int pageSize) {
          try {
              BusinessProject businessProject = new BusinessProject();
              businessProject.setState(state);
      
              // 分页查询,设置分页参数
              PageHelper.startPage(pageNum, pageSize);
              List list = businessProjectService.selectBusinessProjectList(businessProject);
              PageInfo pageInfo = new PageInfo<>(list);
      
              // 根据选项卡的不同状态将数据存放到对应的Map中
              if (businessProject.getState().equals("0")) {
                  mmap.put("Projectslist0", list);
                  mmap.put("pageInfo0", pageInfo);
                  return "project::main-content0";
              } else if (businessProject.getState().equals("1")) {
                  mmap.put("Projectslist1", list);
                  mmap.put("pageInfo1", pageInfo);
                  return "project::main-content1";
              } else if (businessProject.getState().equals("2")) {
                  mmap.put("Projectslist2", list);
                  mmap.put("pageInfo2", pageInfo);
                  return "project::main-content2";
              } else if (businessProject.getState().equals("3")) {
                  mmap.put("Projectslist3", list);
                  mmap.put("pageInfo3", pageInfo);
                  return "project::main-content3";
              }
              return "评审项目,局部刷新数据错误,!";
          } catch (Exception e) {
              throw new RuntimeException(e);
          }
      }
      
      1. 前端页面中修改代码:
      
      
      1. 添加JavaScript函数:
      function viewBystate(state) {
          $.ajax({
              url: "/ByStatelist/" + state,
              success: function (data) {
                  $("#main-content" + state).html(data);
                  // 加载对应选项卡的分页数据
                  $("#main-content" + state).append($("#pagination" + state).html());
              },
              error: function (xhr, textStatus, errorThrown) {
                  console.log(textStatus);
              }
          });
      }
      

      在以上代码中,通过监听选项卡的点击事件,调用viewBystate函数发送异步请求,后端返回对应的分页数据,并将数据加载到对应的选项卡区域中,实现了选项卡的分页刷新。

      需要注意的是,需要在后端模板文件中添加分页数据的片段,以便在前端动态加载分页数据。修改片段的方式为在分页数据的HTML代码上添加th:fragment指定片段的名字,并在对应选项卡区域中引用该片段。

      希望以上解决方案能够帮助到你,如果还有其他问题,请随时提问。

      展开全部

      评论 编辑记录
    • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-02 14:10
      关注

      引自免费微信小程序:皆我百晓生

      我理解您的需求,以下是我根据您提供的HTML结构和数据类型对您的Thymeleaf模板进行修改后的示例,并提供了一份代码:

      
      
      
          
          Thymeleaf 多个选项卡如何分页?亲后端没有思路
          
          
          
          
      
      
          

      页面标题

      在上述代码中,我添加了一个隐藏的

      元素并设置了其类名为loginModal。这样,在整个页面下方的导航栏(包括标签、图片等)将保持可见。同时,我也通过JavaScript对按钮进行了样式更改,使其不会自动显示到下一页。

      对于不同的状态,页面会渲染相应的选项卡,且对于未登录的情况,会在控制台打印出错误信息。至于请求方法,由于我们只发送了一个GET请求,所以没有错误处理和刷新数据。您可以根据具体的业务逻辑进行适当调整。

      关于Ajax操作和表单验证,您可以参考以下代码:

      function viewB意识形态ues(state) {
          $.ajax({
              type: "GET",
              url: prefix + "/ByStatelist/" + state,
              error: function(request) {
                  $.modal.alertError("系统错误");
              },
              success: function(data) {
                  if (data == "未登录") {
                      $("#main-content0").html(data);
                  } else {
                      $("#main-content1").html(data);
                      $("#main-content2").html(data);
                      $("#main-content3").html(data);
                  }
              }
          });
      }
      

      请注意,这里只是一个示例,具体实现可能会有所不同。如果您有其他问题或需要更详细的解答,请随时向我提问。

      展开全部

      评论 编辑记录
    • GISer Liu 2024-04-02 14:26
      关注

      该回答引用自GPT-3.5,由博主GISer Liu编写:

      针对你的问题,你想要在Thymeleaf中实现多个选项卡每个选项卡都有自己的分页功能,但是目前遇到了局部刷新的问题,无法实现分页数据的更新。你希望能够用一个方法来解决这个问题。
      首先,要实现这个功能,你需要在前端页面中为每个选项卡维护一个独立的分页对象,而不是共用一个分页对象。这样可以确保每个选项卡的分页数据可以独立刷新。
      具体实现步骤如下:

      1. 在前端页面为每个选项卡添加一个独立的分页对象。例如,给每个选项卡的分页器添加不同的id,例如pageInfo0pageInfo1pageInfo2pageInfo3
      2. 修改后端控制器,根据不同的选项卡状态查询对应的数据,并将数据和分页对象返回到前端页面。
      3. 在前端页面的JavaScript代码中,根据选项卡状态使用不同的id来局部刷新对应的分页器和数据。
        下面是一个简单的示例代码,帮助你理解这个实现思路:
        javaCopy code
        // 后端控制器
        @GetMapping("/ByStatelist/{state}")
        public String aaa(ModelMap mmap, @PathVariable String state, @RequestParam(defaultValue = "1") int pageNum,
        @RequestParam(defaultValue = "1") int pageSize) {
        try {
        BusinessProject businessProject = new BusinessProject();
        businessProject.setState(state);
        PageHelper.startPage(pageNum, pageSize);//关键
        List list = businessProjectService.selectBusinessProjectList(businessProject);
        PageInfo pageInfo = new PageInfo<>(list);
        mmap.put("Projectslist" + state, list);  // 将数据存入对应的选项卡列表中
        mmap.put("pageInfo" + state, pageInfo);  // 将分页信息存入对应的选项卡分页器中
        return "project::main-content" + state;  // 根据选项卡状态返回对应的局部刷新区域
        } catch (Exception e) {
        throw new RuntimeException(e);
        }
        }
        
        javascriptCopy code
        // 前端页面的JavaScript代码
        function viewBystate(state) {
        $.get("/ByStatelist/" + state, function (data) {
        $("#main-content" + state).html(data);  // 刷新选项卡对应的数据列表
        $("#pageInfo" + state).html(data);  // 刷新选项卡对应的分页器
        });
        }
        
        以上是一个简单的示例,具体实现还需要根据你的项目结构和需求进行适当的调整。希望这能帮助到你解决问题!

      如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

      展开全部

      评论
    • CSDN-Ada助手 CSDN-AI 官方账号 2024-04-02 16:27
      关注

      【以下回答由 GPT 生成】

      感谢您的问题。您可以尝试以下解决方案来实现Thymeleaf中多个选项卡的分页功能:
      
      1. 在后端控制器中添加不同的请求映射方法,如下所示:
      
      ```java
      @GetMapping("/tab1")
      public String getTab1Data(Model model, @RequestParam(defaultValue = "1") int page) {
          // 根据选项卡1的点击事件加载数据并进行分页处理
          Page dataPage = yourDataService.getTab1Data(page);
          model.addAttribute("dataPage", dataPage);
          return "tab1 :: tab1Data";
      }
      
      @GetMapping("/tab2")
      public String getTab2Data(Model model, @RequestParam(defaultValue = "1") int page) {
          // 根据选项卡2的点击事件加载数据并进行分页处理
          Page dataPage = yourDataService.getTab2Data(page);
          model.addAttribute("dataPage", dataPage);
          return "tab2 :: tab2Data";
      }
      
      1. 在前端页面中通过Ajax技术实现局部刷新,如下所示:
      <div th:replace="fragments/tab1 :: tab1Data">div>
      
      <div th:replace="fragments/tab2 :: tab2Data">div>
      
      <script th:inline="javascript">
          $(document).ready(function () {
              $('#tab1').click(function () {
                  $.get('/tab1', function (data) {
                      $('#tab1Data').html(data);
                  });
              });
      
              $('#tab2').click(function () {
                  $.get('/tab2', function (data) {
                      $('#tab2Data').html(data);
                  });
              });
          });
      script>
      
      1. 后端控制器返回JSON格式数据,前端用JavaScript实现分页功能:
      @GetMapping("/tab1")
      public ResponseEntity getTab1Data(@RequestParam(defaultValue = "1") int page) {
          // 根据选项卡1的点击事件加载数据并进行分页处理
          Page<Data> dataPage = yourDataService.getTab1Data(page);
          return ResponseEntity.ok(dataPage);
      }
      

      在前端页面中使用JavaScript处理返回的JSON数据并实现分页功能。

      希望以上内容对您有所帮助,如有疑问请随时联系我。谢谢! ```



      【相关推荐】



      如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

      展开全部

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    使用 Helm Cli 将 chart 推送到 Harbor
    从 iPhone 15/15 Pro 恢复丢失数据的 3 种方法
    基于柔性人机接口的人机协调运动控制方法
    windows ninja 安装
    轻松掌握辗转相除法(原理+俩道简单编程题详解)
    使用项目自动生成的dokcerfile第一次构建时把加载aps5.0失败无法找到加载的文件
    mybatis动态sql和分页
    Python-入门-安装和运行(二)
    c_指针
    计及新能源出力不确定性的电气设备综合能源系统协同优化(Matlab代码实现)
  • 原文地址:https://ask.csdn.net/questions/8082714