【问题标题】:GORM inheritance and GSPGORM继承和GSP
【发布时间】:2012-03-29 15:41:11
【问题描述】:

您好,我正在使用 Grails 做一个应用程序。 这是一个管理发票的应用程序。 每张发票都有一个产品清单。 每个产品可以是具有不同属性的 3 种类型之一。 所以,我已经完成了模型

class Invoice{
     static hasMany = [products: Product]
}

abstract class Product{
    static belongsTo = [invoice: Invoice]
    abstract int getPrice()
}

class ProductA extends Product{
     //implementation of getPrice using its own properties
}

现在我不知道如何从 GSP 的角度来管理它。

我知道 Grails 使用 class 列管理继承,因此,当我编写表单以添加产品时,我是否还必须管理此类输入?

类似这样的:

 <g:textField name="products[0].class" value="ProductA" />

我对 Grails 很陌生,我知道 Spring,而且我不知道如何管理它,每个建议都很好。 非常感谢。

【问题讨论】:

    标签: grails grails-orm gsp


    【解决方案1】:

    产品不必属于发票。从 Invoice 到 Product 的一种方式 hasMany 关系就足够了。而且您根本不需要为您的 Product 类提供基类、扩展类模型。您可以添加一个

    字符串产品类型
    到您的 Product 类,并可能添加一个 inList 约束:
    static constraints = {
        productType(inList: ['A','B','C'])
    }
    

    您可以有一个 g.select 来定义您的产品类型,当您的表单提交时带有产品名称,您需要绑定它或创建一个新的域对象并保存它。

    new Product(params).save()
    

    【讨论】:

    • 问题在于,对于不同的 productType,我有不同的字段和不同的计算价格的方法...我必须创建一个包含所有这些字段的大类吗?
    • 好的,那么您可以使用 ProductType productType 而不是 Product 类中的 String productType。这样你就有了一个名为 ProductType 的类,你可以在其中有一个 List 字段或只是 List fields
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多