JSF - actionListener
Lorsque l'utilisateur interagit avec les composants, tels que h: commandButton ou h: link, le JSF déclenche des événements d'action qui peuvent être gérés de deux manières.
S. Non | Technique et description |
---|---|
1 | Method Binding Passez le nom de la méthode de bean géré dans l' attribut actionListener du composant UI. |
2 | ActionListener Implémentez l'interface ActionListener et transmettez le nom de la classe d'implémentation à l' attribut actionListener du composant UI. |
Liaison de méthode
Définir une méthode
public void updateData(ActionEvent e) {
data = "Hello World";
}
Utilisez la méthode ci-dessus
<h:commandButton id = "submitButton"
value = "Submit" action = "#{userData.showResult}"
actionListener = "#{userData.updateData}" />
</h:commandButton>
ActionListener
Implémenter ActionListener
public class UserActionListener implements ActionListener {
@Override
public void processAction(ActionEvent arg0)
throws AbortProcessingException {
//access userData bean directly
UserData userData = (UserData) FacesContext.getCurrentInstance().
getExternalContext().getSessionMap().get("userData");
userData.setData("Hello World");
}
}
Utiliser la méthode d'écoute
<h:commandButton id = "submitButton1"
value = "Submit" action = "#{userData.showResult}" >
<f:actionListener type = "com.tutorialspoint.test.UserActionListener" />
</h:commandButton>
Exemple d'application
Créons une application de test JSF pour tester l'actionListener dans JSF.
Étape | La description |
---|---|
1 | Créez un projet avec un nom helloworld sous un package com.tutorialspoint.test comme expliqué dans le chapitre JSF - Première application . |
2 | Modifiez le fichier UserData.java comme expliqué ci-dessous. |
3 | Créez le fichier UserActionListener.java sous un package com.tutorialspoint.test . Modifiez-le comme expliqué ci-dessous. |
4 | Modifiez home.xhtml comme expliqué ci-dessous. Gardez le reste des fichiers inchangés. |
5 | Modifiez result.xhtml comme expliqué ci-dessous. Gardez le reste des fichiers inchangés. |
6 | Compilez et exécutez l'application pour vous assurer que la logique métier fonctionne conformément aux exigences. |
sept | Enfin, créez l'application sous la forme d'un fichier war et déployez-la dans Apache Tomcat Webserver. |
8 | Lancez votre application Web en utilisant l'URL appropriée, comme expliqué ci-dessous à la dernière étape. |
UserData.java
package com.tutorialspoint.test;
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ValueChangeEvent;
@ManagedBean(name = "userData", eager = true)
@SessionScoped
public class UserData implements Serializable {
private static final long serialVersionUID = 1L;
private static Map<String,String> countryMap;
private String data = "sample data";
public String showResult() {
return "result";
}
public void updateData(ActionEvent e) {
data="Hello World";
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
UserActionListener.java
package com.tutorialspoint.test;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
public class UserActionListener implements ActionListener {
@Override
public void processAction(ActionEvent arg0)
throws AbortProcessingException {
//access userData bean directly
UserData userData = (UserData) FacesContext.getCurrentInstance().
getExternalContext().getSessionMap().get("userData");
userData.setData("Hello World");
}
}
home.xhtml
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:h = "http://java.sun.com/jsf/html"
xmlns:f = "http://java.sun.com/jsf/core">
<h:head>
<title>JSF tutorial</title>
</h:head>
<h:body>
<h2>actionListener Examples</h2>
<h:form>
<h2>Method Binding</h2>
<hr/>
<h:commandButton id = "submitButton"
value = "Submit" action = "#{userData.showResult}"
actionListener = "#{userData.updateData}" />
</h:commandButton>
<h2>ActionListener interface</h2>
<hr/>
<h:commandButton id = "submitButton1"
value = "Submit" action = "#{userData.showResult}" >
<f:actionListener
type = "com.tutorialspoint.test.UserActionListener" />
</h:commandButton>
</h:form>
</h:body>
</html>
result.xhtml
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:f = "http://java.sun.com/jsf/core"
xmlns:h = "http://java.sun.com/jsf/html">
<h:head>
<title>JSF Tutorial!</title>
</h:head>
<h:body>
<h2>Result</h2>
<hr />
#{userData.data}
</h:body>
</html>
Une fois que vous êtes prêt avec tous les changements effectués, laissez-nous compiler et exécuter l'application comme nous l'avons fait dans le chapitre JSF - Première application. Si tout va bien avec votre application, cela produira le résultat suivant.
Cliquez sur n'importe quel bouton de soumission. Vous verrez le résultat suivant.