在我的Spring MVC应用程序中,我们有表单对象,这些对象由JSP中的<form:form
标记映射到。这些对象与我的常规模型bean是分开的,它们实际上形成了一种视图模型。这些对象的难点在于这些对象与服务对象期望的实际模型bean之间的映射。目前,我们已经手动编写了将表单映射到bean的代码,反之亦然。这不是最优的,因为它需要大量的额外代码。我们考虑过的其他选项有:
- 写一个映射类。这仍然需要手动编写代码,但至少不在控制器中。
- 自动生成映射类。这可能需要手动生成和更新某种映射文件。
- 将bean和表单中的属性命名为相同,并使用Spring的
BeanUtils.copyProperties
来回移动它们。这看起来很糟糕,因为它不是一个明显的链接,如果不保持一致,会导致奇怪的运行时行为。 - 将form对象写为facade,它在内部保存bean并更新它。
对于执行此操作的项目的长期健康状况而言,最佳方法是什么?
我建议你使用dozer框架来映射域对象和视图对象。唯一的问题是你仍然需要手动创建视图类。您还可以使用代码生成自动执行此操作。