JSF Passer des paramètres depuis l'EL

Tagged:

Voila ... je suis pas mécontent d'en être arrivé la ...

EL c'est l'embedded language ... Le truc qu'on écrit à l'intérieur des value="#{ICI DU EL}" de JSF !

Le but c'est quoi ? On veut pouvoir faire :

<html:outputText value="#{monBackingBean.maFonction['MonParamètre']}" />

Mais la si derrirère on fait un backing bean comme ceci ;

class BackingBean {
  public String getMaFonction(String param) {
    return ">>" + param;
  }
}

Ca saute dans tous les sens ... mais pourquoi tant de haine ? J'aime pas quand quelque chose ne fonctionne pas simplement ...

La fonctionalité des crochets fonctionne si on a une table ou une map ou quelque chose du genre ... Qu'a cela ne tienne ... On va faire ça :

public abstract class AbstractJSFGetterMap implements Map {
 
	/*- la fonction qui nous interresse -*/
	public abstract Object get(Object key);
 
	/*- Les autres -*/
	public void clear() {}
	public boolean containsKey(Object key) {return false;}
	public boolean containsValue(Object value) {return false;}
	public Set entrySet() {return null;}
	public boolean isEmpty() {return false;}
	public Set keySet() {return null;}
	public Object put(Object key, Object value) {return null;}
	public void putAll(Map t) {}
	public Object remove(Object key) {return null;}
	public int size() {return 0;}
	public Collection values() {return null;}
 
}

Et voila ... On peut utiliser ça maintenant dans notre backing bean :

class BackingBean {
	public Map getMaFonction() {
		return new AbstractJSFGetterMap() {
			public Object get(Object param) {
				return ">>" + (String)param;
			}
		};
	}
}

Bon maintenant tout marche ... Excellent non ?

Comments

Pourrais tu stp expliquer plus en details l'implementation ?

Ok j'ai capté. Merci ça me sera tres utile!!

Wow j'explique de mieux en mieux :) j'ai même pas eu le temps d'écrire !!! :D

Ben c'est cool si t'as trouvé :) pratique non ?

Pratique mais comment tu fais si tu veux appeller ta méthode avec des paramètres dans un commandButton, par exemple :
<h:commandButton value="OK" action="#{monbackingBean.maFonction['MonParamètre1','MonParamètre2']}">

ben ... dis moi si c'est stupide, mais un bouton ça sert a faire un submit sur une forme ... donc si tu veux passer des paramètres a une fonction il te suffit de faire un <h:inputHidden /> non ??? puis dans ta fonction tu va le récupérer ...

Enfin c'est comme ça que je l'aurais fait en tout cas ... la le soucis c'était de récupérer du texte en fonction d'autres choses ...

autant pour moi, j'avais pas pensé au coup du inputHidden. Merci beaucoup pour les explications.

sdsdfgsdwxfgxcfh