我遇到的情况是我正在更改对象的几个参数值。
UserDetails有大约14个参数。我正在更改几个参数的值并从表单中提交它们。这些值应该在数据库后端更新。
是否有任何内置函数来检查是否有任何值被更改?
答案 0 :(得分:1)
是否有任何内置函数可以说明哪些值发生了变化?
没有
是否有任何内置函数来检查是否有任何值发生了变化?
没有
但是,您可以实现自己的方法来测试这些东西。 equals
方法易于实现,实际上许多IDE都有“向导”来生成它们。 “改变了什么”的方法更复杂。复杂性在于方法告诉调用者哪些字段已更改,以及调用者如何使用此信息。
或者,Apache Commons提供了一个名为EqualsBuilder
的类,它使用反射,等等来根据字段比较对象。
我也同意JB Nizet。如果您正在尝试优化数据库更新,那么您可能会浪费时间。你可能最好只保存所有字段。
考虑一下。除非您的前端缓存在用户更新表单时(或不更新)从数据库读取的字段的旧值,否则您的前端将不得不重新查询数据库以查找旧值。你最好只发出UPDATE以更新所有字段,而不是执行SELECT,然后是条件UPDATE,这是有所改变的。
答案 1 :(得分:0)
可能你可以查看这个链接..我不确定这可以在java中完成。但是,你可以试试javascript。请检查此链接。你可以用EXT.js
handler: function(btn, evt) {
var f = btn.up('form').getForm();
f.submit({
url: '/some-path-on-my-server/save/,
getParams: function(useModelValues) {
var falseVal = false;
var fieldParams = this.form.getValues(falseVal, true, this.submitEmptyText !== falseVal, useModelValues, true);
return Ext.apply({}, fieldParams);
}
});
}
https://www.sencha.com/forum/showthread.php?173867-I-want-to-submit-only-dirty-field-values