为什么JFinal2.2中的自动生成Model代码,把setter的链式调用取消了

发布于 2021-11-30 12:02:46 字数 1344 浏览 803 评论 5

@JFinal 你好,想跟你请教个问题:

以前都是这样调用的

new Customer().
                set(Customer.USERNAME, username).
                set(Customer.EMAIL, email).
                set(Customer.PASSWORD, encodPwd).
                set(Customer.SALT, fakeSalt).
                set(Customer.IS_ACTIVE, "Y").
                set(Customer.CREATE_BY, 0).
                set(Customer.CREATE_DATE, DateUtil.getNow()).
                set(Customer.LAST_UPDATE_BY, 0).
                set(Customer.LAST_UPDATE_DATE, DateUtil.getNow()).
                set(Customer.IS_DELETE, "N").
                save();



因为setter方法返回当前对象,而现在利用官方提供的自动生成工具生成的setter返回值变为了void,所以只能这样了

Customer newCustomer = new Customer();
		newCustomer.setUsername(username);
		newCustomer.setEmail(email);
		newCustomer.setPassword(encodPwd);
		newCustomer.setSalt(fakeSalt);
		newCustomer.setIsActive(AppCons.YES);
		newCustomer.setCreateBy(0);
		newCustomer.setCreateDate(DateUtil.getNow());
		newCustomer.setIsDelete(AppCons.NO);
		newCustomer.save();



再设计上是出于什么考虑吗?

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

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

发布评论

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

评论(5

执手闯天涯 2021-12-01 20:47:12

让我感觉又回到了spring的怀抱…

晚风撩人 2021-12-01 20:25:05

波总过节也在用工啊

无声静候 2021-12-01 20:00:20

回复
过节写代码消遣一下

风苍溪 2021-12-01 18:10:51

回复
jfinal 2.3 考虑添加一个配置,用户可以选择是否生成链式调用的 setter

筱果果 2021-11-30 14:56:15

   很多第三方的工具依赖于 java bean 规范,java bean 规范下的 setter 方法就是返回的 void,为了避免那些第三方工具工作不正常,所以生成的 setter 方法不支持链式调用。

   不过,这是很容易解决的,jfinal 生成器被设计成可扩展,只需要继承一下 BaseModelGenerator,覆盖掉父类中生成 setter的那个方法,把 void 改为返回 return (M)this; 方法原型将 void 改为 public M set.... 即可。

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