一、登录输入正确密码但还是提示密码错误,使用BCryptPasswordEncoder加密
解决方案
// 上面通过把输入的密码进行加密和数据库已加密的密码用equals比较的方法,因为每次加密后的密码其实是不一样的
// 将输入的密码和数据加密的密码通过matchers()方法比较可以解决此问题
BCryptPasswordEncoder().matches(oldPassword, sysUser.getPassword());
二、修改菜单时,选择父级菜单时可以选择本身和子菜单,会造成菜单混乱等问题
解决方案:
// 添加一些判断条件进行过滤,从页面传来要修改菜单的id和从数据库查询菜单的父id比较,相等则跳过菜单构建
// 从页面传来要修改菜单的id和从数据库查询菜单id比较,相等则跳过菜单构建
public static void setPermissionsTreeNoSonById(Integer parentId, Integer id, List<SysPermission> permissionsAll, JSONArray array) {
for (SysPermission permission : permissionsAll) {
if (permission.getParentId().equals(parentId) && !permission.getParentId().equals(id) && !permission.getId().equals(id)) {
String string = JSONObject.toJSONString(permission);
JSONObject parent = (JSONObject) JSONObject.parse(string);
array.add(parent);
if (permissionsAll.stream().filter(p -> p.getParentId().equals(permission.getId())).findAny() != null) {
JSONArray child = new JSONArray();
parent.put("child", child);
setPermissionsTreeNoSonById(permission.getId(), id, permissionsAll, child);
}
}
}
}
三、日期组件弹出后立马消失或者不显示
解决方案:
修改日期组件外层div的大小
四、报错:This is no getter for property named “roleId)” in “com.xxx.SysDao”
解决方案:
粗心sql写错,要仔细检查sql语句,字段名,表面,参数名是否一 一对应
五、配置druid一些Filter后发现修改操作和删除操作全部失败
解决方案:
# 将下面配置改成true
delete-allow: true
drop-table-allow: true
multi-statement-allow: true
六、请求返回数据,不跳转页面
解决方案:
去掉方法上的@ResponseBody注解
还有一种就是如果在类上面使用的时@RestController,如果需要跳转页面需使用@Controller
七、查询出来的日期不对,新增操作日期也不对,来来回回日期少了16个小时
解决方案:
docker容器时间比系统时间少8小时
启动docker容器添加 -e TZ=Asia/Shanghai
配置数据库连接使用serverTimezone=Asia/Shanghai
实例类中日期字段上使用@JsonFormat(pattern = “yyyy-MM-dd”, timezone = “GMT+8”)
八、一些500错误
大多数情况是返回数据到渲染到页面时报错,有js写错,需要获取的数据字段写错等