jfinal save()方法保存的值全为null
//后台代码
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(主键有值,并且还能正常获取到,数据库字段和对象属性一一对应)??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
继承了!! 找到问题是save方法保存的值来源于model的attrs;而getBean方法的本质调用的是model里面自定义的setter方法。并不会保存到attrs。很好奇当初大神为啥不在反射执行setter方法method.invoke(bean, value);前保存一份到attrs(model.set(attrName, value);)呢??
Role 这个 bean 是否继承过 Model?
和数据并没有什么关系啊,我在保存之前使能够获取到数据的
哈哈哈,带坏了。。。
强烈建议:数据请务必校验后再入库!!!
我的id不管是默认还是手动设置为null,都能插入成功并返回主键,问题是主键以外的其他字段没值
这个应该是final的ID的问题,你进sava的方法看下就明白了
拜托看到的大神们指导一下咯