model中的set(String attr, Object value)方法为什么不能表中字段没有时跳过该字段赋值,
@JFinal 你好,想跟你请教个问题:使用Model中的set(String attr, Object value)方法时在表中没有该字段时会抛出异常,也就是一个map中可能有10个字段,而接收的类只有其中5个字段,用setAttrs时调用set方法时会直接抛出异常,而我想的是跳过该字段赋值,直接进行下一个字段的赋值呢,这个有方法可以解决吗
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
ok明白该怎么解决了
引用来自“JFinal”的评论
Model.set(attr, valuve) 方法专门用来设置该 model 应该有的属性值,当属性名不存在时抛出异常是为了避免开发者手误写错属性名从而造成难以察觉的 bug。
当需要往 Model 中存入非属性值时,直接使用 Model.put(key, value) 即可打完收工。
如果用put方式,我就没有必要强转了,直接可以获取里面的东西,我就想set的时候能够只根据user类所对应的表有的字段赋值,其余的字段不进行赋值
比如说A类里面有a1,a2,a3的属性,对应a表, B类里面有b1,b2,b3属性,对应b表,C类无对应表,三个类都继承model,在登录时,我把A和B的属性值全部put到C类中去保存到session中,在之后方法中使用session时直接获取出,然后用A去接收时,只获取A有的属性值,B去获取时,只获取B有的值,然后进行操作。
回复
set时抛异常,你可以在截获异常时用put。或者全用put,这样就没有异常产生了
回复
但是put的字段不用于更新数据库,这一点要注意
回复
怎么截获异常呢,那个不是在model源码中吗
Model.set(attr, valuve) 方法专门用来设置该 model 应该有的属性值,当属性名不存在时抛出异常是为了避免开发者手误写错属性名从而造成难以察觉的 bug。
当需要往 Model 中存入非属性值时,直接使用 Model.put(key, value) 即可打完收工。