Applications Web avec JSF


Comment passer des paramètres dans une url avec JSF

Donne une solution pour passer des paramètres directement entre 2 pages web avec JSF.

Dans une application Web, il est courant d’avoir besoin de passer des informations depuis une page pour les récupérer dans la page suivante. Pour ce faire, un des moyens est de les passer dans l’URL   de la page à afficher. Voyons comment réaliser cela dans une application basée sur JSF  


 Présentation

Le petit programme suivant est composé de 2 pages Web, la première initialise la donnée qu’elle fera passer à la seconde lors de son appel. On aura également besoin de définir un bean pour définir une variable java.

Le but va être de passer un paramètre nommé no qui aura pour valeur "1". Le lien créé aura la syntaxe suivante dans notre exemple :
...  /ecran-02.xhtml?no=1

 Première page

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3.  
  4. Exemple de passage de paramètres dans l'appel d'un second écran.
  5.  
  6. -->
  7. <!DOCTYPE html>
  8. <html lang="fr"
  9.      xmlns="http://www.w3.org/1999/xhtml"
  10.      xmlns:h="http://xmlns.jcp.org/jsf/html"
  11.      xmlns:f="http://xmlns.jcp.org/jsf/core">
  12.  
  13.   <h:head>
  14.     <title>Ecran 01</title>
  15.     <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  16.   </h:head>
  17.   <h:body>
  18.     <p>Exemple de passage d'une variable lors de l'appel d'un second écran par son URL.</p>
  19.     <p>On définie le nom et la valeur du paramètre à placer dans une balise param du bouton.</p>
  20.    
  21.     <h:button value="Ecran2" outcome="/exemple02/ecran-02">
  22.       <f:param name="no" value="1" />
  23.     </h:button>
  24.   </h:body>
  25. </html>

Télécharger

 Le bean

  1. package exemple02.jsf;
  2.  
  3. import javax.enterprise.context.RequestScoped;
  4. import javax.inject.Named;
  5. import lombok.Getter;
  6. import lombok.Setter;
  7.  
  8.  
  9. /**
  10.  *
  11.  * Bean qui définie une variable java correspondant au paramètre.
  12.  * (Utilisation d'annotations Lombok pour éviter de déclarer explécitement les getter/setter
  13.  */
  14. @Named
  15. @RequestScoped
  16. public class Exemple02aView
  17. {
  18.   @Getter @Setter private int no;
  19. }

Télécharger

Remarque : J’ai utilisé la librairie Lombok qui définie des annotations pour éviter de définir les méthodes get/set.

 La seconde page

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3.  
  4. Second écran devant récupérer le paramètre passé dans l'uRL de l'écran 1.
  5.  
  6. -->
  7. <!DOCTYPE html>
  8. <html lang="fr"
  9.      xmlns="http://www.w3.org/1999/xhtml"
  10.      xmlns:h="http://xmlns.jcp.org/jsf/html"
  11.      xmlns:f="http://xmlns.jcp.org/jsf/core">
  12.  
  13.   <h:head>
  14.     <title>Ecran 02</title>
  15.     <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  16.   </h:head>
  17.   <h:body>
  18.    
  19.     <p>On définie la relation entre le paramètre et l'attribut java du bean.</p>
  20.    
  21.     <f:metadata>
  22.       <f:viewParam name="no" value="#{exemple02aView.no}" />
  23.     </f:metadata>
  24.    
  25.     <p>On peut maintenant utiliser l'attribut java qui a été initialisé avec la valeur du paramètre</p>
  26.    
  27.     <h:outputText value="La valeur est: #{exemple02aView.no}" />
  28.    
  29.    
  30.   </h:body>
  31. </html>

Télécharger

On peut vérifier dans la barre d’adresse, que le paramètre apparaît bien dans l’URL  .

 Conclusion

Nous venons de voir une solution, parmi d’autre, pour passer des paramètres d’une page à une autre.

Article n° 77

Crée par: chris

Créé le: 27 août 2016

Modifié le: 29 août 2016

Nombre de visites: 2066

Popularité: 10 %

Popularité absolue: 1

Mots clés de cet article


SPIP

2003-2024 LePpf
Plan du site | | RSS 2.0 | Sur YouTube

Visiteurs connectés : 4

Nombre moyen de visites quotidiennes sur le site: 214