修改用户信息的时候后台报错,但是数据在数据已经修改成功了

报错信息:com.jfinal.template.TemplateException: "user" can not be null for accessed by "user.id",user.id不能为空?为什么修改表数据都要setId的?而且我设置了id自增长

评论区

66666666

2018-06-01 11:16

你修改数据跟id自增长没有关系的,用model去update的话,要set(“id”“你的id相应的值”)进去才得,因为是主键不能为空

童年

2018-06-01 11:26

我不明白的是:修改数据为什么需要重新set ID的,我前端传回来一个id是为了查询到那条要修改的这条数据,然后再修改它的其他信息,为什么还要重新给他set一个一样的id值?@66666666

童年

2018-06-01 11:35

难道jfinal的封装的修改方法和hibernate,mybatis的不一样的?要自己给自己一个id?@66666666

66666666

2018-06-01 11:42

@童年 不是这样子的,你是不是用model对象去update的?如果是,你就肯定要set(“id”,getPara("id")),getPara("id")是你从前台传过来的值,不需要你重新生成一个id,最后用model.update()方法就得了

童年

2018-06-01 11:50

@66666666 我知道你的意思,但是User user = userService.getUserById(getParaToInt("id"))这个通过id查询回来的用户,他里面的id字段就已经有值的了,为什么还要重新给他set一遍?

66666666

2018-06-01 12:04

@童年 对的,重新set,除非你自己写Db.update("sql语句")

童年

2018-06-01 14:24

@66666666 好吧,谢谢大佬了

JFinal

2018-06-03 21:47

模板中使用了 user.id, 但你的 user 本身是 null ,因此 user.id 就相当于 null.id ,必然会报错的

jfinal enjoy 对此引入了空合安全表达式,使用 user.id ?? 即可

童年

2018-06-04 14:33

@JFinal 感谢大佬

热门反馈

扫码入社