jfinal save()方法保存的值全为null

一生-有你 发布于 2017/09/11 14:43
阅读 416
收藏 0

//后台代码

public void saveRole(){
         Role role = getBean(Role.class,"");
         System.out.println("id="+role.getRoleId());
         System.out.println("name="+role.getRoleName());
         System.out.println("desc="+role.getRoleDesc());
         System.out.println("status="+role.getRoleStatus());
         role.save();
         int id = role.getInt("roleId");
         if(id > 0){
             this.renderText("角色添加成功!");
         }else{
             this.renderText("角色添加失败!");
         }
     }

//打印日志

id=0
name=角色名称
desc=角色说明
status=1
Sql: insert into `roles`() values()

JFinal action report -------- 2017-09-11 14:31:11 ------------------------------
Url         : POST /basic/saveRole
Controller  : cn.myapp.controller.IndexController.(IndexController.java:1)
Method      : saveRole
Parameter   : roleName=角色名称  roleDesc=角色说明  roleStatus=1 

问题描述:

1.页面表单传了3个string类型的参数(name="XXX",不是name="model.XXX"形式)

2.使用getBean(Role.class,"")方式获取对象(属性都有set,get 方法,通过打印属性也确实有值)

3.数据库为mysql,roles表的主键为自增,带条件分页查询操作正常

问题:role对象明明有值,但调用save()方法保存的所有属性值却为null(主键有值,并且还能正常获取到,数据库字段和对象属性一一对应)??

 

加载中
0
一生-有你

拜托看到的大神们指导一下咯

0
l
liangna

这个应该是final的ID的问题,你进sava的方法看下就明白了

一生-有你
我的id不管是默认还是手动设置为null,都能插入成功并返回主键,问题是主键以外的其他字段没值
0
蓝水晶飞机
蓝水晶飞机

哈哈哈,带坏了。。。

强烈建议:数据请务必校验后再入库!!!

一生-有你
和数据并没有什么关系啊,我在保存之前使能够获取到数据的
0
JFinal
JFinal

Role 这个 bean 是否继承过 Model? 

一生-有你
继承了!! 找到问题是save方法保存的值来源于model的attrs;而getBean方法的本质调用的是model里面自定义的setter方法。并不会保存到attrs。很好奇当初大神为啥不在反射执行setter方法method.invoke(bean, value);前保存一份到attrs(model.set(attrName, value);)呢??
返回顶部
顶部