2012-03-29 2 views
0

안녕하세요, Grails로 응용 프로그램을 만들고 있습니다. 송장을 관리하는 응용 프로그램입니다. 각 인보이스에는 제품 목록이 있습니다. 각 제품은 특성이 다른 3 가지 유형 중 하나 일 수 있습니다. 그래서, 지금은 내가보기의 GSP 점에서이를 관리하는 방법에 대한 아무 생각이GORM 상속 및 GSP

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 
} 

와 모델을했습니다.

Grails가 클래스 열을 사용하여 상속을 관리한다는 것을 알고 있습니다. 따라서 제품을 추가하기위한 양식을 작성할 때이 클래스 입력을 관리해야합니까? 이 같은

뭔가 :

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

내가 Grails는 꽤 새로운 해요, 나는 봄을 알고도 그것으로 내가 그것을 관리하는 방법에 대한 생각이없는, 모든 제안은 좋은 것입니다. 많은 감사.

답변

0

본 제품은 송장에 속하지 않아도됩니다. 한 가지 방법은 송장에서 제품에 이르기까지 많은 관계가 있습니다. 그리고 Product 클래스의 클래스 모델을 확장하는 기본 클래스가 필요하지 않습니다. 당신은 당신의 제품 클래스에

String productType
를 추가하고 어쩌면 inList 제약 조건 추가 할 수 있습니다 : 당신은 당신의 양식을 제품 이름으로 제출하면 제품 유형 등을 정의하는 g.select을 가질 수

static constraints = { 
    productType(inList: ['A','B','C']) 
} 

를 입력 그것을 바인딩하거나 새 도메인 객체를 만들어 저장해야합니다.

new Product(params).save() 
+0

문제는 다른 productType에 대해 가격을 계산할 다른 필드와 다른 방법이 있다는 것입니다 ... 모든 필드가있는 하나의 큰 클래스를 만들어야합니까? – rascio

+0

그렇다면 Product 클래스의 String productType 대신 productType productType을 사용할 수 있습니다. 이 방법으로 List 필드 또는 List 필드를 가질 수있는 ProductType 클래스가 있습니다. – chethan