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

Play! Java Discussion :

Binding de collection


Sujet :

Play! Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut Binding de collection
    Bonjour,

    Je début avec Play! et je me heurte à pas mal de choses. Notamment, ici, la récupération d'une collection.

    Pour situer le contexte, j'ai un sondage qui propose plusieurs choix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Entity
    public class Poll extends Model {
     
        @Id
        public Long id;
     
        @Required
        public String title;
        public String description;
     
        @Valid
        public List<Choice> choices;
    }
    Le nombre de choix est inconnu et je génère à la volée les champs "qui vont bien" :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    @(poll: Poll, pollForm: Form[Poll]))
     
    @import helper._
    @import helper.twitterBootstrap._
     
    @choiceGroup(field: Field, className: String = "choice") = {
        <div class="@className">
            <input name="label" placeholder="Choice"/>
            <a href="#" class="removeChoice btn btn-danger btn-mini"><i class="icon-white icon-remove-sign"></i> Remove</a>
        </div>
    }
     
    @main("Add choices") {
        <form method="post" action="/poll/addChoices/@poll.id">
            <fieldset>
                <legend>Choices</legend>
                <div id="choices">
                    @repeat(pollForm("choices")) { choice =>
                        @choiceGroup(choice)
                    }
     
                    @** Keep an hidden block that will be used as template for Javascript copy code **@
                    @choiceGroup(
                        pollForm("choices[x]"),
                        className = "choice_template"
                    )
     
                    <div class="manage">
                        <a class="addChoice btn btn-inverse btn-small">Add another choice</a>
                    </div>
                </div>
            </fieldset>
     
            <div class="actions">
                <input type="submit" class="btn btn-primary" value="Create" />
                <a href="/" class="btn btn-link">Cancel</a>
            </div>
        </form>
     
        <script type="text/javascript" charset="utf-8">
            $('.removeChoice').live('click', function(e) {
                $(this).parents('.choice').remove()
                renumber()
            })
     
            $('.addChoice').live('click', function(e) {
                var template = $('.choice_template')
                template.before('<div class="choice">' + template.html() + '</div>')
            })
     
            $('#form').submit(function() {
                $('.choice_template').remove()
            })
        </script>
    }
    J'aimerais récupérer ma collection de Choice mais le binding n'est pas aussi "automatique" que sur un objet simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        public static Result saveChoices(Long pollId) {
            Form<Poll> filledForm = pollForm.bindFromRequest();
            Poll poll = filledForm.get();
            PollService.saveChoices(pollId, poll.choices);
            return ok(index.render());
        }
    [IllegalStateException: No value] : Poll = filledForm.get().choices;
    Avez-vous un pointeur ou des suggestions pour faire ça "bien" ?

    Pour l'instant, j'utilise un Form<Poll> mais seule la collection m'intéresse réellement (le Poll est saisi à l'écran précédent).

    J'ai honte de poser des questions comme ça mais je rame un peu avec le manque de doc (compréhensible) de cette version 2.

    Merci et bonne journée !

    Alban
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Plus ça va, plus le fait d'utiliser un Form<Poll> me semble stupide.
    Parce que tout ce que je veux, c'est une collection de Choice.
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

Discussions similaires

  1. Problème de binding sur Collection
    Par orelien dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 13/07/2015, 19h52
  2. Réponses: 0
    Dernier message: 22/06/2015, 14h35
  3. Binding listview Collection d'objets
    Par djmic dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 23/08/2011, 20h33
  4. collection binding
    Par lucienkany dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/10/2005, 12h09
  5. []Erreur sur second emploi collection binding
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/03/2004, 18h02

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