PageHelper.StartPage方法失效。element-ui 分页修改current-page后,视图上还是没改变

在使用 Element-UI 的分页组件时,遇到PageHelper.StartPage方法未正常工作的问题。当尝试点击页码改变`current-page`属性时,视图并未更新。解决方案是在绑定`current-page`时使用`.sync`修饰符,确保参数能正确传入并更新分页状态。
Integer pageSize = queryPageBean.getPageSize();
Integer pageNum = queryPageBean.getCurrentPage();
String queryString = queryPageBean.getQueryString();

Integer currentPage = (pageNum-1)*pageSize;//当前页计算成limit需要的数值

List<Cash> page = cashMapper.findCashListByPage(currentPage, pageSize,queryString);
手动将参数计算,重新传入sql语句

Mapper.xml文件中sql如下:
<!--分页查询提现列表-->
<select id="findByPage" parameterType="Map" resultType="com.chuang.pojo.Cash">
    SELECT * FROM t_cash
    <if test="queryString != null and queryString.length > 0">
        where username = #{queryString}
    </if>
    limit #{currentPage},#{pageSize}
</select>



<el-pagination
        class="pagiantion"
        @current-change="handleCurrentChange"
        :current-page="pagination.currentPage"
        :page-size="pagination.pageSize"
        layout="total, prev, pager, next, jumper"
        :total="pagination.total">
</el-pagination>

element-ui配置完成分页后,点击页码数字,current-page并没有变化,请求传进去的参数还是原来的。

加上".sync"后生效,成功传入参数

<el-pagination
        class="pagiantion"
        @current-change="handleCurrentChange"
        :current-page.sync="pagination.currentPage"
        :page-size="pagination.pageSize"
        layout="total, prev, pager, next, jumper"
        :total="pagination.total">
</el-pagination>
#### 原因分析 1. **分页信息未正确存储**:`PageHelper` 判断是否需要分页时,关键在于从 `ThreadLocal` 中取出分页信息,若未正确存储分页信息,`ThreadLocal` 中无相关内容,就会被判定为无需分页。例如在调用 `startPage` 方法后,由于代码逻辑问题,分页信息未正常存储到 `ThreadLocal` 中 [^1]。 2. **插件配置问题**:若在 SSM 框架中使用 `PageHelper`,插件配置可能存在错误。比如在 `SqlSessionFactory` 中未正确传入 `PageHelper` 的插件,或者插件的属性配置错误,像 `helperDialect` 配置错误,就会影响分页功能 [^2]。 3. **方法调用位置问题**:`startPage` 方法的调用位置很关键,必须在执行查询方法之前调用。若在查询方法之后调用,分页信息无法应用到查询中,就无法实现分页 [^3]。 #### 解决方案 1. **确保分页信息正确存储**:检查调用 `startPage` 方法的代码逻辑,保证在调用 `startPage` 后,有异常情况导致分页信息丢失。例如: ```java import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import java.util.List; // 正确调用 startPage 方法 PageHelper.startPage(1, 10); List<YourEntity> list = yourMapper.selectAll(); PageInfo<YourEntity> pageInfo = new PageInfo<>(list); ``` 2. **检查插件配置**:在 SSM 框架中,确保 `SqlSessionFactory` 正确配置了 `PageHelper` 插件,并且插件属性配置正确。示例如下: ```xml <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 其他配置 --> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <props> <prop key="helperDialect">mysql</prop> <!-- 根据实际数据库配置 --> <prop key="reasonable">true</prop> </props> </property> </bean> </array> </property> </bean> ``` 3. **调整方法调用位置**:保证 `startPage` 方法在执行查询方法之前调用。例如: ```java // 错误示例 List<YourEntity> list = yourMapper.selectAll(); PageHelper.startPage(1, 10); // 正确示例 PageHelper.startPage(1, 10); List<YourEntity> list = yourMapper.selectAll(); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值