2013-08-22 3 views
2

Я пытаюсь использовать commandObject для проверки моих данных при отправке формы. Могу ли я подтвердить отношение hasMany в commandObject. Мой сценарий - это нечто подобное.Command Object and hasmany

буксировочный простой classes ти отношений hasMany:

class Book{ 
    String nameBook 
} 

class Author{ 
    String nameAuthor 
    static hasMany = [books:Book]  
} 

Простой commandObject с hasMany, что я хочу, чтобы проверить, когда отправить форму.

@grails.validation.Validateable 
class MyValidateCommand{ 

    String nameAuthor 
    static hasMany = [books:Book] 


    static constraints = { 
     nameAuthor nullable:false 
     books nullable:false 
    } 

} 

Пс: Я знаю, что этот commandObject ошибочен, он не компилируется. Но могу ли я сделать что-то подобное?

+0

один ответ добавлен –

ответ

7

hasMany в GORM используется для ассоциации в объектах Domain. В случае командных объектов будет осознанный подход иметь различные объекты команд для каждого домена (например: AuthorCommand и BookCommand) и объект команды будет выглядеть следующим образом:

import org.apache.commons.collections.list.LazyList 
import org.apache.commons.collections.functors.InstantiateFactory 

//Dont need this annotation if command object 
//is in the same location as the controller 
//By default its validateable 
@grails.validation.Validateable 
class AuthorCommand{ 
    String nameAuthor 
    //static hasMany = [books:Book] 

    //Lazily initialized list for BookCommand 
    //which will be efficient based on the form submission. 
    List<BookCommand> books = 
      LazyList.decorate(new ArrayList(), 
           new InstantiateFactory(BookCommand.class)) 

    static constraints = { 
     nameAuthor nullable:false 
     books nullable:false 

     //Let BookCommand do its validation, 
     //although you can have a custom validator to do some 
     //validation here. 
    } 
} 
+1

не может список книг будет просто: 'List elias

0

Не уверен, почему вы не можете попробовать, как (обычные декларации спящего режим hasMany)

class MyValidateCommand{ 

    String nameAuthor 
    Set<Book> books= new HashSet<Book>(); 


    static constraints = { 
     nameAuthor nullable:false 
     books nullable:false 
    } 

}