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}")
Excellent! Merci!! – Ben
De rien. – BalusC