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

JSF Java Discussion :

JSF Datatable et selectBooleanCheckbox


Sujet :

JSF Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Points : 73
    Points
    73
    Par défaut JSF Datatable et selectBooleanCheckbox
    Bonjour,

    Je désespère de comprendre un jour pourquoi mes JSF ne fonctionnent pas alors que le problème paraît tout à fait simple.

    J'ai le datatable suivant :

    <html:dataTable binding="#{graphe.dataTable}" value="#{graphe.sommets}"
    var="tache" cellspacing="4" border="1">

    <html:column>
    <core:facet name="header">
    <html:outputText value="Designation" />
    </core:facet>
    <html:outputText value="#{tache.id}"/>
    <core:facet name="footer">
    <html:inputText value="#{tache.id}"/>
    </core:facet>
    </html:column>

    <html:column>
    <core:facet name="header">
    <html:outputText value="Libellé" />
    </core:facet>
    <html:outputText value="#{tache.libelle}" />
    <core:facet name="footer">
    <html:inputText value="#{tache.libelle}"/>
    </core:facet>
    </html:column>

    <html:column>
    <core:facet name="header">
    <html:outputText value="Duree">
    <core:convertDateTime pattern="dd MMM yyyy"/>
    </html:outputText>
    </core:facet>
    <html:outputText value="#{tache.duree}" />
    <core:facet name="footer">
    <html:inputText value="#{tache.duree}"/>
    </core:facet>
    </html:column>

    <html:column>
    <core:facet name="header">
    <html:outputText value="Sélection" />
    </core:facet>
    <html:selectBooleanCheckbox id="cb" value="#{tache.select}" />
    </html:column>

    </html:dataTable>


    et je n'arrive pas à récupérer l'état de mes checkbox quelque soit la méthode utilisée (y compris le binding avec un UISelectBoolean dans l'une des classes Tache ou Graphe).

    Le test if(this.checkbox.isSelected()) renvoie systématiquement false. Ou est l'erreur ? Quelle est la bonne méthode ??

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Points : 514
    Points
    514
    Par défaut
    j'ai eu le meme probléme que toi il y a quelque temps. il ne faut pas utiliser les binding avec les checkbox.

    Voici le post où cisco m'as donné la solution. va y jetter un coup d'oeil :

    http://www.developpez.net/forums/vie...502&highlight=

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Points : 73
    Points
    73
    Par défaut
    J'avais effectivement lu ce post mais lorsque j'utilise onchange="submit()" je ne peux cocher qu'une seule case, toutes les autres étant je pense automatiquement rafraichies par le submit sont décochées.

    Si je retire onchange, je récupère toujours false dans mon test.
    Voici la fonction si ça peut aider :

    public class Graph
    {
    ...

    private UISelectBoolean checkbox;
    public UISelectBoolean getCheckbox()
    {
    return this.checkbox;
    }
    public void setCheckbox(UISelectBoolean checkbox)
    {
    this.checkbox = checkbox;
    }

    public Graph()
    {
    this.checkbox = new UISelectBoolean();
    ...
    }
    ...
    public String removeSelected()
    {
    int size = this.dataTable.getRowCount();
    List datas = (List) this.dataTable.getValue();
    List selectedObjects = new ArrayList();
    Tache t;
    for(int i=0; i < size; i++)
    {
    this.dataTable.setRowIndex(i);
    t = (Tache)datas.get(i);
    System.out.println(t.getId() + " " + t.isSelect());
    if(this.checkbox.isSelected())
    {
    selectedObjects.add(t);
    }
    }

    this.sommets.removeAll(selectedObjects);
    return "remove";
    }
    ...
    }

  4. #4
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Points : 73
    Points
    73
    Par défaut
    Je pense que c'est un problème de validation du formulaire car si je n'ai pas l'attribut immediate=true dans mes boutons, il ne se passe rien du tout. Est-ce normal ? Encore merci.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Points : 73
    Points
    73
    Par défaut
    L'erreur provenait de mes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <core:facet name="footer">
    <html:inputText value="#{tache.libelle}"/>
    </core:facet>
    qui visiblement posaient des problèmes de validation. En les supprimant et en retirant l'attribut immediate des boutons, j'arrive à récupérer mes l'état de mes checkbox et à supprimer les lignes correspondantes !
    Un dernier merci, je me lance à peine dans l'apprentissage des JSF, developpez.com m'a été d'un grand secours !

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

Discussions similaires

  1. JSF dataTable commandLink
    Par Nemesys1976 dans le forum JSF
    Réponses: 5
    Dernier message: 24/01/2010, 22h30
  2. Jsf + dataTable + inputText
    Par chercheur11 dans le forum JSF
    Réponses: 1
    Dernier message: 15/12/2008, 23h25
  3. jasper+exporter jsf datatable problem
    Par ang.net dans le forum JSF
    Réponses: 12
    Dernier message: 01/09/2008, 14h36
  4. Réponses: 1
    Dernier message: 07/07/2008, 10h58
  5. [JSF] DataTable et liste
    Par Ahmed0012 dans le forum JSF
    Réponses: 1
    Dernier message: 27/05/2006, 03h52

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