model中的set(String attr, Object value)方法为什么不能表中字段没有时跳过该字段赋值,

发布于 2021-11-29 13:57:10 字数 271 浏览 873 评论 8

@JFinal 你好,想跟你请教个问题:使用Model中的set(String attr, Object value)方法时在表中没有该字段时会抛出异常,也就是一个map中可能有10个字段,而接收的类只有其中5个字段,用setAttrs时调用set方法时会直接抛出异常,而我想的是跳过该字段赋值,直接进行下一个字段的赋值呢,这个有方法可以解决吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

辞别 2021-12-01 03:33:12

ok明白该怎么解决了

谢绝鈎搭 2021-12-01 03:29:56

引用来自“JFinal”的评论

   Model.set(attr, valuve) 方法专门用来设置该 model 应该有的属性值,当属性名不存在时抛出异常是为了避免开发者手误写错属性名从而造成难以察觉的 bug。

   当需要往 Model 中存入非属性值时,直接使用 Model.put(key, value) 即可打完收工。

柳絮泡泡 2021-12-01 03:28:16

如果用put方式,我就没有必要强转了,直接可以获取里面的东西,我就想set的时候能够只根据user类所对应的表有的字段赋值,其余的字段不进行赋值

回忆凄美了谁 2021-12-01 03:00:17

比如说A类里面有a1,a2,a3的属性,对应a表, B类里面有b1,b2,b3属性,对应b表,C类无对应表,三个类都继承model,在登录时,我把A和B的属性值全部put到C类中去保存到session中,在之后方法中使用session时直接获取出,然后用A去接收时,只获取A有的属性值,B去获取时,只获取B有的值,然后进行操作。

静谧 2021-11-30 22:52:16

回复
set时抛异常,你可以在截获异常时用put。或者全用put,这样就没有异常产生了

千纸鹤带着心事 2021-11-30 16:47:57

回复
但是put的字段不用于更新数据库,这一点要注意

奢华的一滴泪 2021-11-30 10:32:07

回复
怎么截获异常呢,那个不是在model源码中吗

冷默言语 2021-11-30 01:27:21

   Model.set(attr, valuve) 方法专门用来设置该 model 应该有的属性值,当属性名不存在时抛出异常是为了避免开发者手误写错属性名从而造成难以察觉的 bug。

   当需要往 Model 中存入非属性值时,直接使用 Model.put(key, value) 即可打完收工。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文