Grails Befehl Objekt Datenbindung

Grails hat sehr guter support für die Bindung an die request-Parameter zu einem domain-Objekt und Verbände. Diese stützt sich weitgehend auf die Erkennung von request-Parametern, mit Ende .id und automatisch laden diese aus der Datenbank.

Es ist jedoch nicht klar, wie das Auffüllen der Verbände des command-Objekts. Nehmen Sie das folgende Beispiel:

class ProductCommand {

    String name
    Collection<AttributeTypeCommand> attributeTypes 
    ProductTypeCommand productType
}

Dieses Objekt hat einen single-ended-Verbindung mit ProductTypeCommand und viele-ended-Verbindung mit AttributeTypeCommand. Die Liste mit allen Attribut-Typen und Produkt-Typen sind verfügbar, von der eine Implementierung dieser Schnittstelle

interface ProductAdminService {
    Collection<AttributeTypeCommand> listAttributeTypes();
    Collection<ProductTypeCommand> getProductTypes();
}

Nutze ich diese Schnittstelle zum Auffüllen der Produkt-und Attribut-Typ-Auswahl-Listen in eine GSP. Ich habe auch Abhängigkeiten injizieren, diese Schnittstelle in den Kommando-Objekt, und verwenden Sie es, zu "simulieren" attributeTypes und productType Eigenschaften auf das command-Objekt

class ProductCommand {

    ProductAdminService productAdminService

    String name   

    List<Integer> attributeTypeIds = []
    Integer productTypeId

    void setProductType(ProductTypeCommand productType) {
        this.productTypeId = productType.id
    }

    ProductTypeCommand getProductType() {
        productAdminService.productTypes.find {it.id == productTypeId}        
    }

    Collection<AttributeTypeCommand> getAttributeTypes() {

        attributeTypeIds.collect {id ->
            productAdminService.getAttributeType(id)
        }
    }

    void setAttributeTypes(Collection<AttributeTypeCommand> attributeTypes) {
        this.attributeTypeIds = attributeTypes.collect {it.id}
    }
}

Was tatsächlich passiert ist, dass die attributeTypeIds und productTypeId Eigenschaften sind gebunden an die jeweiligen request-Parameter und die Getter/setter "simulieren" productType und attributeTypes Eigenschaften. Gibt es eine einfachere Möglichkeit zum Auffüllen der Verbände des command-Objekts?

Kommentar zu dem Problem - Öffnen
Ich weiß nicht die Antwort auf deine Frage, aber ich persönlich denke, das ist ein tolles material für ein plugin oder sogar ein feature in zukünftigen Grails-Versionen. Kommentarautor: jjczopek

InformationsquelleAutor der Frage Dónal | 2011-04-15

Schreibe einen Kommentar