作为一个工作一年的菜鸡,终于写下了人生中第一篇博客,想想就激动。这个问题也是好久之前的问题了,是在上家公司遇到问题,使用的技术也是很老的,现在记录一下。
使用的框架
activity+shiro+pagehelper+easyui
背景
需要查询activity的中的人员待办任务,当用户去操作时,需要验证是否有这个权限。
在确保用户有操作权限后,有时候也会提示用户无权限进行操作。
问题产生的原因
easyui左侧菜单树每一个菜单都被标签包裹住了,导致每次点击菜单都会查询一次用户的所有权限(这个也不是啥好操作,点一次就查一次),在点击后,会默认调用查询的工作流待办任务的方法,这方法是我直接copy过来的,而上一位写代码的大哥,使用了PageHelper.startPage()。。。后面也没有进行MyBatis查询,后面跟着的是activity查询带办任务的方法,这是activity自带的方法,而且也可以分页处理,不知道他为啥这么写。这样就导致了新产生了分页参数未被消费,会给权限查询语句加上分页操作,从而导致有时候会提示用户无权限操作。
根据使用手册,使用PageHelper.startPage(),需要在后面紧跟MyBatis查询方法,才能保证使用安全。否则PageHelper产生的参数就不会被消费,导致在后面的某个查询操作上添加分页参数,造成错误。正常情况下,后面紧跟Mybatis查询,查询成功后,它就会调用PageHelper中的clearPage()清除参数,而clearPage这个方法实际执行了ThreadLocal中的remove()方法。
https://pagehelper.github.io/docs/howtouse/
总之,使用框架的时候一定要看官方文档,要不找个问题费死劲,浪费时间,得不偿失。