首页 > 其他分享 >做Spring Boot图书后台管理项目遇到分页报错的问题

做Spring Boot图书后台管理项目遇到分页报错的问题

时间:2024-07-29 17:55:16浏览次数:17  
标签:分页 Spring list public current 报错 Boot new 书籍

一、问题

        实现分页功能时,点击第几页或者下一页时报错404


二、分析问题

      1、  使用的是MyBatis Plus 框架 ,实现分页功能需要拦截器,可能是没有添加拦截器。

检查是否添加配置类并添加拦截器

PageConfiguration配置类

/**
 * 配置类,用于Spring Boot项目的页面分页配置。
 */
@Configuration
public class PageConfiguration {

    /**
     * 配置分页拦截器,用于对数据库操作结果进行分页处理。
     *
     * @return PaginationInterceptor 分页拦截器实例。
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

2、添加了配置类,也报错404,检查业务代码寻找问题

前端

HTML index默认查询第几页

<script>
    BUI.use('common/main',function(){
        var config = [{id:'1',menu:[{text:'书籍管理',items:[
                    {id:'12',text:'书籍查询',href:'/book/list/1'},//默认查询第一页并展示数据
                    {id:'3',text:'书籍借阅',href:'/borrow/list'},
                    {id:'4',text:'书籍归还',href:'/back/list'}
                ]}]}];
        new PageUtil.MainPage({
            modulesConfig : config
        });
    });
</script>

html分页组件

 <script>
        $(function() {
            var cp=parseInt($("#curPage").val());
            var tp=parseInt($("#tolPage").val());
            $("#pagination2").pagination({
                currentPage:cp,
                totalPage:tp,
                isShow: false,
                count: 5,
                prevPageText: "< 上一页",
                nextPageText: "下一页 >",
                callback: function(current) {
                    location.href='/book/list'+current;
                }
            });
        });
    </script>

HTML隐藏域

<input th:value="${page.currentPage}" type="hidden" id="curPage"/>
<input th:value="${page.totalPage}" type="hidden" id="tolPage"/>

后端

Service层

public interface BookService extends IService<Book> {
    public PageVO pageList(Integer currentPage);

}

ServiceImpl层

@Service
public class BookServiceImpl extends ServiceImpl<BookMapper, Book> implements BookService {

    @Autowired
    private SortMapper sortMapper;
    @Autowired
    private BookMapper bookMapper;
    /**
     * 分页查询书籍列表,包括书籍的基本信息和所属分类名称。
     *
     * @return PageVO 包含分页信息和书籍列表的VO对象。
     */
    @Override
    public PageVO pageList(Integer currentPage) {
        // 创建查询条件,筛选出数量大于0的书籍
        QueryWrapper<Book> bookQueryWrapper = new QueryWrapper<>();
        bookQueryWrapper.gt("number", 0);

        // 初始化分页参数,第1页,每页显示5条记录
        Page<Book> page = new Page<>(currentPage, 5);

        // 执行分页查询
        Page<Book> resultPage = this.bookMapper.selectPage(page, bookQueryWrapper);

        // 初始化分页VO对象
        PageVO pageVO = new PageVO();
        // 设置当前页码和总页数
        pageVO.setCurrentPage(resultPage.getCurrent());
        pageVO.setTotalPage(resultPage.getPages());

        // 初始化书籍VO列表
        // 初始化一个列表,用于存储转换后的书籍VO对象
        List<BookVO> result = new ArrayList<>();

        // 遍历查询结果,转换为BookVO对象,并获取分类名称
        // 遍历书籍列表,将每个书籍转换为BookVO对象,并获取其排序信息
        for (Book book : resultPage.getRecords()) {
            BookVO bookVO = new BookVO();
            BeanUtils.copyProperties(book, bookVO);

            // 根据书籍的分类ID,查询分类名称
            // 根据书籍的排序ID,查询对应的排序信息
            QueryWrapper<Sort> sortQueryWrapper = new QueryWrapper<>();
            sortQueryWrapper.eq("id", book.getSid());
            Sort sort = this.sortMapper.selectOne(sortQueryWrapper);
            // 设置分类名称
            bookVO.setSname(sort.getName());
            result.add(bookVO);
        }

        // 将排序信息设置到BookVO对象中
        pageVO.setData(result);
        return pageVO;
    }
}

Controller层

@Controller
@RequestMapping("/book")
public class BookController {

    /**
     * 注入书籍服务类,用于处理书籍相关的业务逻辑。
     */
    @Autowired
    private BookService bookService;


    /**
     * 处理列出所有书籍的GET请求。
     *
     * @param model Spring MVC中的模型对象,用于向视图传递数据。
     * @return 返回视图名称,此处为列出书籍的页面。
     */
    @GetMapping("/list/{current}")
    public String list(@PathVariable("current") Integer current,  Model model) {

        PageVO pageVO = bookService.pageList(current);
        // 返回视图名称,跳转到列出书籍的页面
        model.addAttribute("page", pageVO);
        return "/user/list";
    }

}

三、解决问题

检查前端 调出控制台报错,发现是book文件下的list2.html找不到,

原因:是HTML中分页组件少写了杠,导致视图解析器直接去寻找list2.html文件

四、解决方法

将上述代码修改为以下代码即可

 <script>
        $(function() {
            var cp=parseInt($("#curPage").val());
            var tp=parseInt($("#tolPage").val());
            $("#pagination2").pagination({
                currentPage:cp,
                totalPage:tp,
                isShow: false,
                count: 5,
                prevPageText: "< 上一页",
                nextPageText: "下一页 >",
                callback: function(current) {
                    location.href='/book/list/'+current;
                }
            });
        });
    </script>

标签:分页,Spring,list,public,current,报错,Boot,new,书籍
From: https://blog.csdn.net/m0_58533479/article/details/140772321

相关文章

  • 实现基于Spring Security的权限控制在淘客返利系统中的应用
    实现基于SpringSecurity的权限控制在淘客返利系统中的应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在构建淘客返利系统时,确保系统的安全性和权限控制是至关重要的。SpringSecurity是一个功能强大的框架,用于提供综合的身份验证和授权服务。......
  • 使用Spring WebSocket实现实时Java应用
    使用SpringWebSocket实现实时Java应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们来探讨一下如何使用SpringWebSocket实现实时Java应用。WebSocket是一种在客户端和服务器之间建立长连接的协议,适用于需要实时数据更新的场景。Spring提供了对......
  • 使用Spring Cloud Stream处理Java消息流
    使用SpringCloudStream处理Java消息流大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨如何使用SpringCloudStream来处理Java消息流。SpringCloudStream是一个用于构建消息驱动微服务的框架,能够与各种消息中间件集成,如RabbitMQ、Kafka......
  • Java中的AOP技术:AspectJ与Spring AOP
    Java中的AOP技术:AspectJ与SpringAOP大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨Java中的AOP(面向切面编程)技术,主要聚焦于AspectJ和SpringAOP。这两者是Java领域中实现AOP的主要工具,通过它们可以实现代码的横切关注点(如日志记录、安全检......
  • 配置spring boot所有启动类都在同一个窗口
    1)添加服务窗口在idea下面结果如下:2)配置前3)选择运行配置类型4)选择SpringBoot配置5)SpringBoot启动类配置成功6)配置前端启动窗口也可以在这里配置查看运行,配置......
  • SSM整合Web工程报错Unable to locate Spring NamespaceHandler for XML schema namesp
    博主在启动Tomcat后报错这个 org.springframework.beans.factory.parsing.BeanDefinitionParsingException:Configurationproblem:UnabletolocateSpringNamespaceHandlerforXMLschemanamespace[http://www.springframework.org/schema/tx]Offendingresource:cl......
  • springboot+vue基于web点餐小程序的个性化推荐演示录像【程序+论文+开题】-计算机毕业
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,餐饮业正经历着前所未有的变革。传统餐饮模式逐渐向智能化、数字化转型,其中,基于Web的点餐小程序凭借其便捷性、高效性和广泛的用户覆盖,成为了餐饮行业的重要服务形式。然而,在海量美食信息与多样化消费者需求......
  • springboot+vue基于web的中草药信息管理系统【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着中医药在全球范围内的日益普及与认可,中草药作为中医药体系的核心组成部分,其信息的系统化、标准化管理显得尤为重要。然而,当前市场上缺乏一个全面、便捷且基于Web的中草药信息管理系统,导致中草药信息零散、不易获取,既不利于中医药......
  • ORA-01658创建表或索引报错分析
    一、报错信息某项目最近在SQLLoader导数据时偶尔会报错,类似如下:SQLloaderORA-01658unabletocrealeINITIALextentforsegmentintablespaceADS5GP2P_1这个报错的意思是,没有足够的连续空间为表或索引创建INITIALextent:[oracle@node1:1~]$oerrora165801658......
  • Jenkins结合SVN报错E230001: Server SSL certificate verification failed的解决方法
    报错如下:svn:E230001:Commitfailed(detailsfollow):svn:E230001:UnabletoconnecttoarepositoryatURL'https://192.168.0.99/svn/xxx/dat'svn:E230001:ServerSSLcertificateverificationfailed:certificateissuedforadifferenthostname,is......