2016-04-11 3 views
0

Ich bin ein Validierungsproblem mit sehr ähnlich, was hier beschrieben wirdGrails Validierung auf einem zugehöriges ‚hasMany‘ Objekt

https://schneide.wordpress.com/2010/09/20/gorm-gotchas-validation-and-hasmany/

aber mit einem wichtigen Unterschied, dass ich (oder will) nicht ein List<Element> elements Feld in meiner Domäne. Mein Code ist

class Location { 

    static hasMany = [pocs: LocationPoc] 

    Integer id 
    String address 
    String city 
    State state 
    String zip 
    ... 

    static mapping = { 
     ... 
    } 

    static constraints = { 
     def regEx = new RegEx() 

     address blank: true, nullable: true, matches: regEx.VALID_ADDRESS_REGEX 
     city blank: true, nullable: true 
     state blank: true, nullable: true 
     zip blank: true, nullable: true 
     ... 
    } 
} 

jedoch, wenn ich einen Ort mit einer Etage POC (Point of Contact) speichern/aktualisieren, erhalte ich einige wilden Fehler. Ich möchte die POCs validieren, wenn ich einen Standort speichere/aktualisiere, aber ich weiß nicht genau, wie. Ich habe ein paar Variationen von

pocs validator: { 
    obj -> obj?.pocs?.each { 
     if (!it.validate()) { 
      return false 
     } 
    } 
    return true 
} 

vergeblich versucht. Ist das möglich, ohne ein neues Feld auf meiner Domain zu erstellen, List<LocationPoc> pocs?

+1

'pocs Validator: - (! It.validate()) {val, OBJ, err> val .each {if return false; ...}} 'Funktioniert nicht für dich? –

+0

Mit 'val, obj, err -> val? .each' gearbeitet! Vielen Dank. Ich dachte, ich wäre auf dem richtigen Weg. – mjswartz

Antwort

1

Sie sind in der Nähe. Das Problem besteht darin, dass Sie auf die zu überprüfende Eigenschaft abzielen müssen, anstatt die Objektreferenz zu verwenden. Es sollte wie folgt aussehen:

pocs validator: { val, obj, err -> 
    val?.each { 
    if (!it.validate()) return false 
    } 
} 
Verwandte Themen