IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Grails Java Discussion :

Passer des objects avec redirect


Sujet :

Grails Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 29
    Points : 25
    Points
    25
    Par défaut Passer des objects avec redirect
    Salut tout le monde !

    Je découvre Grails depuis deux trois jours, et j'aimerais, lors d'une redirection, passer une liste d'objets en paramètres, ce que je fais via params.
    Et pourtant, lorsque je récupère ma liste d'objets dans la page d'après, elle m'apparait en tant que String. Comme j'avais entendu parler avec d'autres frameworks d'une histoire de sérialization, j'ai implémenté l'interface sur la classe sans que ça change quoi que ce soit.

    Voici mon code. La closure rechercherProfil effectue une redirection vers le controleur Recherche, qui possède sa propre vue (d'ailleurs la vue marche bien, mais affiche les mauvais résultats, forcément). Et je suis loin d'être sûr de l'efficience de la première ligne de la closure list de RechercheController.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class ProfilController {
     
        def scaffold = Profil;
     
     
        def rechercherProfil = {
            def results = Profil.findAllByFirstNameOrLastName(params.rechercheNomProfil, params.rechercheNomProfil);
     
            println("nombre de résultats : " + results.size())
            println("classe de results : " + results.class)
            results.each{
                println it
            }
     
            redirect(controller:"recherche", action:"list", params:["resultsList":results])
        }
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class RechercheController {
     
        def index ={}
     
        def list = {
            params.max = Math.min(params.max ? params.int('max') : 10, 100)
            def resultsInstanceList = params.getAt("resultsList")
            println("classe de resultsInstanceList : " + resultsInstanceList.class)
            redirect(controller:"profil", action:list")
        }
     
    }
    Merci d'avance.

    Au fait, connaissez vous un bon endroit pour la doc groovy ? Je n'ai pas encore trouvé.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Trouvé. Il suffit de remplacer le redirect par un chain et de foutre les objets dans model au lieu de params, puis de récupérer via un chainModel. Vlà ce que ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    class ProfilController {
     
        def scaffold = Profil;
     
     
        def rechercherProfil = {        
            //println(params.rechercheNomProfil)
            //ArrayList<Profil> results = new ArrayList<Profil>()
            def results = Profil.findAllByFirstNameOrLastName(params.rechercheNomProfil, params.rechercheNomProfil);
     
            println("nombre de résultats : " + results.size())
            println("classe de results : " + results.class)
            results.each{
                println it
            }
     
            chain(controller:"recherche", action:"list", model:["resultsList":results])
        }
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class RechercheController {
     
        def index ={}
     
        def list = {
     
            def resultsInstanceList = chainModel.getAt("resultsList")
            println("classe de resultsInstanceList : " + resultsInstanceList.class)
            resultsInstanceList.each{
                println(it)
            }
        }
    }

    EDIT : au fait je vous file le lien d'où j'ai trouvé ça :
    http://www.coderanch.com/t/60929/oa/...rollers-Grails

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Configuration] Impossible de passer des arguments avec require
    Par black is beautiful dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 06/10/2007, 21h58
  2. [AJAX] Passer des données avec caracteres speciaux
    Par linar009 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 10/01/2007, 11h42
  3. Réponses: 5
    Dernier message: 16/11/2006, 07h09
  4. JAVA - Passer des Objects à des méthodes
    Par canou94 dans le forum CORBA
    Réponses: 2
    Dernier message: 15/11/2005, 22h39
  5. Passer des Image avec SOAP
    Par pef421 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 01/03/2004, 21h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo