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 :

Changer la valeur d'un bean directement dans page jsp


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Par défaut Envoyer parametre jsf en java grace à un lien
    Bonjour,

    J'ai un petit probléme,j'aimerais dans ma page jsp(qui est en fait du jsf),changer la valeur d'un bean directement ou aprés avoir cliqué sur le lien valider mais étant donné qu'il y a que du texte dans cette page donc je ne vois pas comment faire (meme avec un champ caché,comment recuper sa valeur si je fais <h:inputTypehidden name="toto" value="1">

    Merci de votre aide

  2. #2
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    heu, j'suis pas trop sure de ce que tu veux faire, mais peut etre qu'un truc du genre pourrais t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:form>
        		<h:commandButton
    					value="Valider"
    					action="#{tonBean.uneAction}"
    					actionListener="#{tonBean.uneAutreAction}"/>
    </h:form>
    Kan tu clikera sur ton bouton, l'actionListener sera executé en premier (tu peut mettre autant d'action listener que tu veux dans le commandButton), puis ca sera le tour de action
    Perso, j'utilise "action" pour savoir sur kel page me rediriger (mon action me retourne un String qui me redirige sur la bonne page en fonction du faces-config.xml)
    Et actionListener pour réaliser des traitement sur mon bean...
    Par contre, si tu utilise actionLIstner, il faut que la méthode que tu appel ressemble à un truc comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	public void uneAutreAction(ActionEvent ev) {
    		//tonTraitement
    	}
    Voili voilou !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Par défaut
    merci de ta réponse,c'est à peut prés cela que je veux mais j'aimerais passer à la fonction un paramétre

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Par défaut
    j'ai du mal m'exprimer,ce que j'aimerais faire c'est que j'ai 4 liens,des que je clique sur un des liens ca appelle une fonction java qui prend un argument selon la ou on a cliqué genre 1 ,2...

    Mais je ne vois pas du tout comment faut faire en jsf,étant donné que ce sont que des liens,meme avec un champ caché,comment mettre dans ce champ la valeur 1 ou 2 selon l'endroit ou on a cliqué et le récupérer....

  5. #5
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 42
    Par défaut
    Bonjour,

    j'ai un problème qui je pense se rapproche de celui-ci.

    Je possède une classe Voiture{marque, modele, annee} et une classe ListeVoiture définie comme suit, qui me permet de remplir un dataTable (plus tard ça sera une base de donnée qui m'alimentera):

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    package com.corejsf;
     
    import java.util.ArrayList;
    import java.util.List;
     
     
    public class ListeVoiture
    {
        private List cars;    
        private String triColumn = null;
        private boolean sortAscending = true;
     
     
        public ListeVoiture() 
        {
        	cars = new ArrayList();
     
        	cars.add(new Voiture("Pigeot", "1070", 2004));
        	cars.add(new Voiture("Pigeot", "2070", 2005));        
        	cars.add(new Voiture("Pigeot", "3070", 2002));
        	cars.add(new Voiture("Reno", "Cinic", 2001));        
        	cars.add(new Voiture("Reno", "Migone", 2003));
        	cars.add(new Voiture("Reno", "Cloé IV", 2006));
        }    
     
        public List getCars() 
        {
            return cars;
        }
     
        public void setCars(List cars) 
        {
            this.cars = cars;
        }   
     
        public String getTriColumn() 
        {
            return triColumn;
        }
     
        public void setTriColumn(String triColumn) 
        {
            this.triColumn = triColumn;
        }
     
        public boolean isSortAscending() 
        {
            return sortAscending;
        }
     
        public void setSortAscending(boolean sortAscending) 
        {
            this.sortAscending = sortAscending;
        }
     
     
     
     
     
     
     
     
        private String tempMarqueAuto;
        private String addVoiture;
     
        public void setAddVoiture(String aModele){
        	if(aModele!=(null))
        		this.addVoiture = aModele;
        	cars.add(new Voiture(tempMarqueAuto, addVoiture, 0));
        //	System.out.println("********marque après la création du nouvel objet Voiture : " + tempMarqueAuto ) ;
        }
     
        public String getAddVoiture() 
        {
            return addVoiture;
        }
     
     
    /* c'est la partie qui nous interesse */
     
    	public void setTempMarqueAuto(String aMarque){
        	if(aMarque!=(null))
        		this.tempMarqueAuto = aMarque;
        //	System.out.println("*********marque récupérée : " + tempMarqueAuto ) ;
        }
     
        public String getTempMarqueAuto() 
        {
            return addVoiture;
        }
     
     
    }
    Donc mon problème consiste en la création d'un nouveau modèle de voiture, on peut associer une propriété à un inputText comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText id="add_modele" value="#{listeVoiture.addVoiture}"/>
    Ce qui permet une gestion des getter et setter automatique.

    Par contre, pour la création de ce nouveau modèle de voiture, j'ai également besoin de la marque et c'est là que j'arrive pas à faire l'association entre
    #{voiture.marque} et #{listeVoiture.tempMarqueAuto}. Voici le bout de mon code relatif à cette colonne :
    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
    <t:column>
                <f:facet name="header">  
                    <h:outputText value="#{messages['sort_marque']}" />    
                </f:facet>
     
    			<t:popup id="b"
                    styleClass="popup"
                    closePopupOnExitingElement="true"
                    closePopupOnExitingPopup="true"
                    displayAtDistanceX="10"
                    displayAtDistanceY="10" >
    				<t:commandLink rendered="#{dToggler.currentDetailExpanded}">
    					<h:outputText value="#{voiture.marque}"/>
    				</t:commandLink>
    				<t:commandLink rendered="#{!dToggler.currentDetailExpanded}" action="#{dToggler.toggleDetail}" actionListener="">
    					<h:outputText value="#{voiture.marque}"/>
    				</t:commandLink>
    				<f:facet name="popup">
                         <h:outputText value="###Cliquez pour ajouter un modèle à la marque #{voiture.marque}"/>
                    </f:facet>
     
                </t:popup>
            </t:column>
    	        <f:facet name="detailStamp">
    	        	<h:panelGroup>
     
    					<h:outputText value="#{listeVoiture.tempMarqueAuto}"/>
    					<h:outputText value="Nouveau modèle : "/>
    					<h:inputText id="add_modele" value="#{listeVoiture.addVoiture}" onchange=""/>
     
    					<h:commandButton value="Ajouter" action="#{dToggler.toggleDetail}"/>
    				</h:panelGroup>
    			</f:facet>
    Donc un clic sur une marque auto fait apparaitre un inputText qui permet de renseigner un nouveau modèle.

    J'aimerai trouver un moyen de passer l'attribut marque de l'objet Voiture associé en paramètre de la méthode setTempMarqueAuto, mais ce n'est pas possible de faire comme ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText value="#{listeVoiture.tempMarqueAuto}(#{voiture.marque})"/>
    J'espère que vous arriverez à me comprendre, c'est pas très simple à expliquer...

  6. #6
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    bon ok avec les lien j ai la solution
    tu fais href="url?paramettre1&paramettre2 ect...
    il faut que l'url pointe sur une servlet (par exemple MASERVLET)
    href=/MonNomDeProjet/servlet/MASERVLET (il y a un fichier xml web ou il faudrat mettre l'enplacement de MASERVLET mais habituellement c'est dans
    /servlet/MASERVLET
    Puis dans la methode get de la servlet tu recupere les paramette
    par getParametter(paramettre1); getParametter(paramettre2);
    et suivant les paramettre tu gère ce que tu veux puis tu fais pointer ta servlet sur la page jsf que tu veus. trève de bavardage je te donne un exemple. ton lien href url
    [CODE]String url = "http://www.petitsitejava.org/servlet/ConfirmationCandidat?email="+email;[/CODE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <A HREF=\""+url +"\">ici</A>
    puis ta servlet qui doit recuperer le paramettre email

  7. #7
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
     
    String emailconfirmant = request.getParameter("email");
    voila puis tu vais le pointage sur une autre page jsf pour montrer par exemple le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getServletContext().getRequestDispatcher("/MaJSFCandidat.faces").forward(request,response);

    tiens essays le site http://www.anewhope.eu
    qui est le programme mis en place avec les extrais de code que je t'ai donner.
    voila si ca peut t'éclairer.

  8. #8
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 42
    Par défaut
    En fait j'ai réussi à passer mes paramètres avec des "binding" comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputHidden value="#{voiture.marque}" binding="#{listeVoiture.refreshVoiture}"/>
    Voire même à un moment je me sert d'un t:popup qui affiche un inputHidden (donc rien ) qui me permet de passer des paramètres fonctions de la position de la souris sur l'écran.

    C'est peut-être pas la solution la plus optimisée, mais je débute et je connais pas encore toutes les possiblitées de JSF.

    D'ailleurs merci pour l'explication sur les servlets, solution qui je pense aurait marché également, ça m'a donné des idées pour la suite.

  9. #9
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    Oui en effet, si tu sais envoyer des mails sous format html tu pourras vérifier et confirmer dans ta base de donnée de la réel existance d'une adresse email.
    tu pointe comme j'ai dis sur l'adresse de ta servlet en mettant en paramètre l'email, si l'email est un vrais email bien l'utilisateur pourras clicquer sur le lien de la servlet et tu recupère l'email par un doGet getParameter(email).Puis par simple consultation et modification de ta table tu pourras marquer colonne de ta table, confirmé="oui" et ainsi tu donneras acces à ton site. Ca évite que de petit rigolo mettent n'importe quel email bidon et c'est meis que de vérifier la syntace de l'email qui peut etre correct mais bidon.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/01/2012, 18h26
  2. Réponses: 2
    Dernier message: 03/05/2011, 10h44
  3. Utiliser une valeur <bean:write /> dans ma jsp
    Par susu39 dans le forum Struts 1
    Réponses: 3
    Dernier message: 18/01/2011, 11h12
  4. Réponses: 1
    Dernier message: 04/01/2010, 18h30
  5. Réponses: 2
    Dernier message: 13/05/2009, 14h37

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