Bonjour,

Je commence à peine JSF et en guise d'entraînement je refais tout un projet servlets/JSP avec uniquement des ManagedBean et des .xhtml. Cependant, je bloque sur un truc qui est a priori tout bête : je souhaite afficher le profil d'un membre dont le login figure dans l'URL (par exemple /../membres?login=-Dici-). Le but est qu'on ne soit pas obligé de passer par un lien ou un formulaire pour consulter un profil.

Mon soucis c'est qu'il faut récupérer ce paramètre, faire une recherche en BD pour récupérer le membre en question, puis enfin seulement retourner la vue. La question est donc : comment envoyer ce paramètre à mon backing-bean ? J'ai trouvé ça sur internet et l'ai utilisé sur ma page xhtml :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<f:metadata>
    	<f:viewParam name="login" value="#{profilBean.login}" />
</f:metadata>
L'ennui c'est qu'il faut que je reçoive ce paramètre avant de faire la requête en BD et que l'affichage de la page attende la fin de cette requête. Je suis parvenu au résultat souhaité mais d'une façon tellement moche que je ne peux pas garder ça en l'état.

Peut-on faire ça simplement avec JSF ?

Merci d'avance !

EDIT : après de plus amples recherches, j'ai enfin trouvé une solution (simple en plus). Je la donne si ça peut servir à d'autres un jour

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
@PostConstruct
private void retrieveMember() {
	ExternalContext ec =  FacesContext.getCurrentInstance().getExternalContext();
	Map<String,String> param = (Map<String,String>) ec.getRequestParameterMap();
	login = param.get("login");
}