2011-07-09 2 views
0

dans jsf2 si nous avons une fonction commeappel de méthodes et fonctions

public String greeting(String gtr) { 
     return "Hello " + gtr; 
} 

puis de la page JSF nous pouvons appeler cette fonction

<h:outputLabel value="#{greetingBean.greeting['some-name']}" 

maintenant ma question est que je veux passer le paramètre dynamique à partir de la même classe de haricots au lieu de 'quelque-nom' quelque chose comme value="#{greetingBean.greeting[greetingBean.name]} est-ce possible?

J'ai requis cela parce que j'ai la valeur dans Map<String, ArrayList> et que vous voulez éditer la valeur ArrayList particulière?

des suggestions?

+0

Avez-vous essayé? – bluefoot

+0

je l'ai essayé et donne une erreur si je me demandais si une solution de contournement pour ce – dinsim

+0

Quelle version de EL utilisez-vous? – bluefoot

Répondre

2

Les crochets sont utilisés pour remplacer la notation par points. C'est,

#{greetingBean.greeting['some-name']} 

est le même que

#{greetingBean.greeting.some-name} 

Ainsi, la méthode greeting ne sera pas appelé. Au lieu de cela, JSF essaiera d'accéder à une propriété greeting, puis essaiera d'accéder à une propriété some-name de l'objet renvoyé par la propriété greeting. C'est-à-dire que votre code ci-dessus génère déjà une erreur.

Si vous utilisez EL 2.2 et que vous voulez appeler une action, mettez simplement:

#{greetingBean.greeting('some-name')} 

ou

#{greetingBean.greetingThatReceivesAMap(greetingBean.name)}