2013-07-23 2 views
0

나는이 도메인 클래스를 가지고의 말을하자 내가 필요하면 내 Person 조회수 (createedit) Person 클래스 내부에 정의되어 있지만, 이들은이없는 모델과 색상 속성에 표시하는 것입니다Grails : 뷰에 렌더링되었지만 지속되지 않는 도메인 속성을 정의하는 방법은 무엇입니까?

class Person { 
    String name 
    Integer age 
    //car data that needs to be shown and filled in views 
    //but not persisted in Person class 
    String model 
    String color 

    static afterInsert = { 
    def car = new Car(model: model, color: color) 
    car.save() 
    } 
} 

class Car { 
    String model 
    String color 
} 

이 클래스와 함께 유지됩니다. modelcolor의 데이터는 afterInsert 이벤트를 사용하여 Car 도메인 클래스를 사용하여 유지해야합니다. 즉, 다른 도메인 클래스의보기를 사용하여 도메인 클래스의 데이터를 저장해야합니다.

미리 감사드립니다.

답변

1

당신은 예를

class Person { 

    static transients = ['model', 'color'] 

    String name 
    Integer age 
    //car data that needs to be shown and filled in views 
    //but not persisted in Person class 
    String model 
    String color 
    .. 
} 

그냥 궁금해서 들어, GORM 무시하려는 특성에 transients을 사용할 수 있지만 당신은 협회

class Person { 
    .. 
    static hasMany = [cars: Car] 
} 

class Car { 
    .. 
    static belongsTo = [Person] 
    static hasMany = [drivers: Person] 
} 

를 사용하지 않는 이유가있다 .. 또는 구성

class Person { 
    Car car 
} 

또는 단순히 복수 도메인과의 데이터 바인딩

//params passed to controller 
/personCarController/save?person.name=John&age=30&car.model=honda&car.color=red 

//in your controller 
def person = new Person(params.person) 
def car = new Car(params.car) 
+0

답장을 보내 주셔서 감사합니다. 이 시도했지만 모델 및 색 필드를보기에서 렌더링되지 않습니다. –

+0

그냥 궁금 해서요 - 연관성, 합성 또는 단순히 [여러 도메인과의 데이터 바인딩]을 사용하지 않는 이유가 있습니까? (http://grails.org/doc/latest/guide/theWebLayer.html#dataBinding) – ikumen

+0

예, 예 정의 될 수있는 관계가 있다고 생각하지만 내 문제는별로 필요하지 않습니다. 위대한 것은 자동차가 있는지 확인하고 해당 ID를 사용하여 데이터를 검색하고 존재하지 않는 경우 팝업 창을 통해 새 자동차를 만드는 것입니다. –

관련 문제