2012-01-08 2 views
0

Cette question est à titre de suivi à ce poste Grails one to many relationship viewComment sauver objet multiple d'une vue à l'aide Grails

L'exemple proposé, il ne fonctionne pas et lancer la suite exception au moment de l'exécution

null id in blog.omarello.Phone entry (don't flush the Session after an exception occurs). Stacktrace follows: 
Message: null id in blog.omarello.Phone entry (don't flush the Session after an exception occurs) 
    Line | Method 
->> 43 | doCall in blog.omarello.ContactController$_closure4$$ENLORkU6 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
| 886 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker 
| 908 | run . . in  '' 
^ 662 | run  in java.lang.Thread 

Je pense plutôt que de faire fonctionner l'exemple peut-on m'aider à comprendre comment puis-je créer un GSP qui peut me permettre d'enregistrer plusieurs instances de la même classe de domaine. Par exemple, un GSP qui peut me permettre d'insérer plusieurs instances Book à la fois?

Répondre

0

Modifiez la classe Contact dans l'exemple de téléphone comme suit et cela devrait fonctionner correctement.

package blog.omarello 

import org.apache.commons.collections.list.LazyList; 
import org.apache.commons.collections.FactoryUtils; 

class Contact { 

    static constraints = { 
     firstName(blank:false) 
     lastName(blank:false) 
    } 

    String firstName 
    String lastName 
    String nickName 


List phones = LazyList.decorate(new ArrayList(), 
            FactoryUtils.instantiateFactory(Phone.class)); 


// List phones = new ArrayList() 
    static hasMany = [ phones:Phone ] 

    static mapping = { 
     phones cascade:"all-delete-orphan" 
    } 

// def getPhonesList() { 
//  return LazyList.decorate(
//    phones, 
//    FactoryUtils.instantiateFactory(Phone.class)) 
// } 

    def String toString() { 
     return "${lastName}, ${firstName}" 
    } 
} 
2

Encore une fois, examinez le projet que j'ai lié sur github. C'est une démonstration de certaines des meilleures pratiques pour ce faire. En particulier, regardez le question/index, car c'est ce que la vue peut ressembler. La pièce d'économie réelle est faite dans le QuestionService, utilisé par le QuestionController. Ce projet fait exactement ce que vous essayez de faire. Révise le.