2010-03-16 7 views
9

Je n'ai pas réussi à trouver un moyen de transmettre des paramètres aux pages JSF via les paramètres d'URL.Comment passer les paramètres d'url à JSF?

http://www.example.com/jsfApp.jsp?param1=value1&param2=value2 

Est-ce que quelqu'un pourrait me pointer dans la bonne direction?

Répondre

21

Comme vous utilisez des JSP, je suppose que vous utilisez JSF 1.x.

Pour créer un lien avec les paramètres de la requête, utilisez h:outputLink avec f:param:

<h:outputLink value="page.jsf"> 
    <f:param name="param1" value="value1" /> 
    <f:param name="param2" value="value2" /> 
</h:outputLink> 

Le value peut être réglé dynamiquement avec l'aide de EL.

Pour les mettre dans le automagiquement bean géré, vous devez définir chacun comme managed-property dans faces-config.xml:

<managed-bean> 
    <managed-bean-name>bean</managed-bean-name> 
    <managed-bean-class>com.example.Bean</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
    <managed-property> 
     <property-name>param1</property-name> 
     <value>#{param.param1}</value> 
    </managed-property> 
    <managed-property> 
     <property-name>param2</property-name> 
     <value>#{param.param2}</value> 
    </managed-property> 
</managed-bean> 

La variable imlicit EL #{param} fait référence à la carte des paramètres de demande comme vous le savez de l'API Servlet. Le haricot devrait bien sûr déjà avoir les propriétés param1 et param2 avec les getters/setters appropriés.

Si vous souhaitez exécuter une logique directement après leur été définies, utiliser l'annotation @PostConstruct:

@PostConstruct 
public void init() { 
    doSomethingWith(param1, param2); 
} 

Pour plus de conseils sur les paramètres de passage et ce genre de choses autour de JSF, vous peut trouver utile.

L'approche JSF 2.x utiliserait soit @ManagedProperty dans la classe du bean backing, soit <f:viewParam> dans la vue cible. Voir aussi cette question: ViewParam vs @ManagedProperty(value = "#{param.id}")

+0

Excellent! Merci!! – Ben

+0

De rien. – BalusC

Questions connexes