我有一个使用Spring和Hibernate的包含多个页面的工作表,需要报告用户到目前为止已完成字段的进度(已完成字段的百分比)。这是我探索的选项:

选项A)
检查模型上的每个属性的值。如果不为空,则增加一个计数器,然后除以检查的属性总数。

选项B)
在模型对象上使用反射并调用每个getter。如果不为空,则增加一个计数器,然后除以检查的属性总数,以得出完成百分比。我在考虑this post的思路。

我知道选项B)的执行成本会更高,并且通常会避免反射,但是在添加/删除属性时,维护起来可能更容易。

我还有其他选择吗?也许我可以专门排除要检查的属性的某种类型的bean实用程序? (或者巧妙地使用BeanUtils?)

最佳答案

两者都不起作用。字段不为null的事实并不意味着用户已加载它(考虑默认值)。除此之外,还要在数据模型和表示层之间建立紧密的耦合(如果不想在屏幕上显示某些字段,该怎么办?)。

我认为您应该将要由页面加载的字段列表发送到浏览器,并在用户加载(或删除)字段值时在其中管理该信息。用户提交更改后,您将拥有已修改字段的数量。

09-26 17:51