0

学习 Spring (3.1.0) 和 Hibernate (4.1.1)。只是想知道大多数开发人员在处理表单数据时会做什么。在编写包含用于提交数据的表单的 JSP 时,您通常是编写一个特定于该表单上的输入字段的类并处理该服务器端,还是只使用您的实体类并将它们绑定到表单上的 elemtns ?

假设我有一个具有 3 个实体类的应用程序:Location、StoreType 和 Store(一个 Store 有一个 StoreType 和一个 Location)。在 /CreateStore JSP 页面上的表单上,我有一个包含所有位置的下拉选择框,另一个包含所有 StoreTypes 的下拉选择框和其他带有商店名称、商店经理等的文本输入字段。

您是否使用 List locationNames、List storeTypes、String storeName 等创建一个 CreateStoreForm 类并将其放在模型上?或者你只是将所有不同的实体类分别放在模型上?我一直在使用后一种方法,但我认为前者可能更好,特别是当用户对同一屏幕发出连续请求时重新填充屏幕。

4

2 回答 2

1

您提到的两种方法都很好。但是选择它们是基于您的要求。在您在问题中提到的情况下,第二种方法更好,因为您传递的两个列表 locationNames 和 storeTypes 只是参考字段。并且在您的实际模型类(具有 storeName 和 storeManager 字段)中必须包含 location 和 storeType 的 id。

因此,当您提交表单时,只有具有存储属性的模型类将存储在数据库中。其他列表字段只是参考数据,您不会将其与其他字段一起存储在数据库中。

希望这对您有所帮助。干杯。

于 2012-06-21T05:02:58.833 回答
1

拥有一个映射表单的类总是好的,然后编写一个 util 方法将表单类转换为 Hibernate 将用于执行操作的实际模型类。

对于下拉列表,您可以@ModelAttribute单独使用返回列表并且可以在表单中使用的方法。而且您不需要将它添加到您的表单类或实体类中。

@Controller
public class MyController {
    @ModelAttribute("productsList")
    public Collection<Product> populateProducts() {
        return this.productsService.getProducts();
    }
    // @RequestMapping etc omitted for brevity
}
于 2012-06-21T07:29:25.183 回答