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 :

setPropertyActionListener et backing bean


Sujet :

JSF Java

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut setPropertyActionListener et backing bean
    Bonjour,

    Je souhaite créer une page qui contiendra plusieurs colonnes.
    chaque colonne contient une liste de liens. Le nombre d'éléments dans chaque liste est indeterminé.

    J'ai créé les différentes listes à l'aide de panelGrid dans mon backing bean et tout les panelgrid sont mis dans un panelGroup général décrit dans ma page jsp et lié avec mon bakcing bean par l'attribut binding.

    Jusque la tout se passe bien. Mon problème est au moment où la personne clic sur un lien. Comment puis je faire pour récupérer le lien sur lequel il a cliqué. Après quelles que recherches j'ai vu que l'élément f:setPropertyActionListener et utilisé pour récupérer des données. Je n'ai pas réussi a trouver la classe java correspondant à cet élément pour pouvoir le créer dans ma fonction.

    Puis je créer cet élément à partir de ma classe java? Si non, connaissez vous une autre méthode pour identifier le lien activé?

    Voici ma fonction java qui créé une liste :
    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
     
     public HtmlPanelGrid createList(final List<Group> groups) {
            final HtmlPanelGrid list = new HtmlPanelGrid();
            list.setColumns(3);
            list.setStyleClass("panelList");
     
            final ExpressionFactory factory = getApplication().getExpressionFactory();
            final ELContext elContext = FacesContext.getCurrentInstance().getELContext();
            final MethodExpression linkNextAction = factory.createMethodExpression(elContext,
                    "#{TerminalPool_1.linkNextAction}", String.class, new Class[]{});
     
            for (Group g : groups) {
                final HtmlGraphicImage imgStatus = new HtmlGraphicImage();
                final HtmlGraphicImage imgType = new HtmlGraphicImage();
                final HtmlCommandLink link = new HtmlCommandLink();
     
                imgStatus.setAlt(bundle.getString("status_alive"));
                imgStatus.setTitle(bundle.getString("status_alive"));
                imgStatus.setValue("../../resources/images/statut-gris.png");
     
                imgType.setUrl("../../public/images/acceptation_set_group.png");
     
                link.setTitle(g.getDescription());
                link.setActionExpression(linkNextAction);
                link.setValue(g.getName());
     
                //ICI AJOUTER LE TRUC QUI ME PERMET D'IDENTIFIER LE LIEN
     
                list.getChildren().add(imgStatus);
                list.getChildren().add(imgType);
                list.getChildren().add(link);
            }
            return list;
        }

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    Normalement je regarde toujours la faq avant de poser une question. J'ai déja vu ces réponses. Mais cela ne m'aide pas dans mon problème.

    J'ai un nombre n de listes. Chacune de ces listes sont représentées par un panelGrid (image1 image2 lien). Ces panelGrid sont créés à l'aide de la fonction java décrite dans mon premier poste. Ensuite tout ces panelGrid sont inclu dans un panel général et injecter dedans dans le cas java.

    Le code jsp de mon panel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:panelGrid binding="#{TerminalPool_1.panelCadre}"/>
    Ma question est comment savoir quel lien a été sélectioné ? Par exemple en réussisant a rajouter l'élément SetPropertyActionListener avec le code java (mais comme je l'ai dit je n'ai pas reussi a trouver la classe java implémentant ce tag).

    Mes panelgrid ,à l'intérieur du panel général ,n'ont pas de binding étant donné qu'ils sont créé aide de code java et que j'en ai un nombre indéterminé (le nombre de liste dépend de parametre)

    Pour la méthod du actionListener, la méthode setActionListernet est dépréciate donc je préférrai éviter de l'utiliser.

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    regarde la documentation.

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    Lorsque que j'importe cette classe, mon éditeur ne la reconnais pas. C4est pour cela que je posais la question dans le doute de me tromper. Si je ne la reconnais pas c'est qu'elle ne fait pas partie des librairies de base de JSF ?

    Edit: Désolée c'est une erreur de ma part

  6. #6
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Citation Envoyé par Edta Voir le message
    Edit: Désolée c'est une erreur de ma part
    C'est à dire ?
    Le problème est résolu ?

  7. #7
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    Non le problème n'est pas résolu. Pour utiliser se tag je dois manipuler des élément appeler ValueExpression. Et cela dépasse mes compétences en JSF.

    J'ai essayé de retourner sur la solution de creation de dataTable. Mais cela me pose aussi des problèmes. le premier est l'affichage, dans mes lignes j'ai comme valeur "#{item.name}" au lieu de la valeur de l'attribue name du l'objet item en cours d'utilisation dans la table et mes images ne s'affiche pas.

    Mes datamodel sont stocker dans une lsite. A la creation de la datatable, j'ajoute la liste traité dans cette liste et ma datatable a l'id de la forme "datatableNumero" ou numero et l'index ou est ca liste datamodel dans la grande liste.

    Mon problème est casiment le meme. comment récuperer la datatable qui contient le lien sélectioné. Car une fois cette datatable récupérée, je peux avec son idée connaitre l'index de sa liste dans la liste général et comme c'est un datatable avec getRoxIndex j'ai l'index de l'élément.

    mon fichier java:
    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
    56
    57
    58
    59
    60
    61
     
    private List tree = new ArrayList();
     
    public void buildHierarchy(final Group group, final Acceptor acceptor) {
            final List<Group> groups = getHierarchy(group, acceptor);
     
            panelCadre.setStyleClass("formCadre");
            panelCadre.setColumns(groups.size());
            panelCadre.getChildren().clear();
     
            int index = 0;
            for (Group g : groups) {
                if (0L == g.getId()) {
                    //panelCadre.getChildren().add(createList(manager.getGroups(getSessionBean().getCurrentAcceptorId())));
                    panelCadre.getChildren().add(createTable(manager.getGroups(getSessionBean().getCurrentAcceptorId()), index++));
                } else {
                    //panelCadre.getChildren().add(createList(manager.getChilds(g.getId())));
                    panelCadre.getChildren().add(createTable(manager.getChilds(g.getId()), index++));
                }
            }
        }
     
    public HtmlDataTable createTable(final List<Group> groups, final int index) {
            final DataModel listGroup = new ListDataModel();
            listGroup.setWrappedData(groups);
            tree.add(listGroup);
     
            final HtmlDataTable list = new HtmlDataTable();
            final HtmlColumn column = new HtmlColumn();
            list.setStyleClass("panelList");
            list.setVar("item");
            list.setValue(listGroup);
            list.setId("dataTable" + index);
     
            final ExpressionFactory factory = getApplication().getExpressionFactory();
            final ELContext elContext = FacesContext.getCurrentInstance().getELContext();
            final MethodExpression linkNextAction = factory.createMethodExpression(elContext,
                    "#{TerminalPool_1.linkNextAction}", String.class, new Class[]{});
     
            final HtmlGraphicImage imgStatus = new HtmlGraphicImage();
            imgStatus.setAlt(bundle.getString("status_alive"));
            imgStatus.setTitle(bundle.getString("status_alive"));
            imgStatus.setValue("../../resources/images/statut-gris.png");
            imgStatus.setRendererType("#{item.status == 'ALIVE'}");
     
            final HtmlGraphicImage imgType = new HtmlGraphicImage();
            imgType.setUrl("../../public/images/acceptation_set_item.png");
            imgType.setRendererType("not #{item.node}");
     
            final HtmlCommandLink link = new HtmlCommandLink();
            link.setTitle("#{item.description}");
            link.setActionExpression(linkNextAction);
            link.setValue("#{item.name}");
     
            column.getChildren().add(imgStatus);
            column.getChildren().add(imgType);
            column.getChildren().add(link);
     
            list.getChildren().add(column);
            return list;
        }
    en fait je tourne en rond, j'ai besion d'un oeil extérieur pour me mettre sur la bonne direction.

Discussions similaires

  1. JSCookMenu action backing bean
    Par mereyj dans le forum JSF
    Réponses: 4
    Dernier message: 26/04/2010, 16h23
  2. [JSF - Backing Bean] Valeur par défaut
    Par gufra dans le forum JSF
    Réponses: 4
    Dernier message: 26/09/2007, 15h44
  3. Backing bean et passage de valeurs
    Par tartanfion dans le forum JSF
    Réponses: 5
    Dernier message: 10/04/2007, 07h41
  4. Diffèrence Managed bean et backing bean
    Par BRAUKRIS dans le forum JSF
    Réponses: 2
    Dernier message: 25/11/2006, 07h49
  5. [Debutant][JSF] backing bean
    Par Shivan dans le forum JSF
    Réponses: 1
    Dernier message: 15/02/2006, 17h09

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