JSF - Beans gestionados
Managed Bean es una clase de Java Bean normal registrada con JSF. En otras palabras, Managed Beans es un bean de Java administrado por el marco JSF. El bean administrado contiene los métodos getter y setter, la lógica de negocios o incluso un bean de respaldo (un bean contiene todo el valor del formulario HTML).
Los beans administrados funcionan como modelo para el componente UI. Se puede acceder a Managed Bean desde la página JSF.
En JSF 1.2, un bean administrado tenía que registrarlo en un archivo de configuración JSF como facesconfig.xml. DesdeJSF 2.0En adelante, los beans administrados se pueden registrar fácilmente mediante anotaciones. Este enfoque mantiene los frijoles y su registro en un solo lugar, por lo que se vuelve más fácil de administrar.
Usando la configuración XML
<managed-bean>
<managed-bean-name>helloWorld</managed-bean-name>
<managed-bean-class>com.tutorialspoint.test.HelloWorld</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>message</managed-bean-name>
<managed-bean-class>com.tutorialspoint.test.Message</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
Usar anotación
@ManagedBean(name = "helloWorld", eager = true)
@RequestScoped
public class HelloWorld {
@ManagedProperty(value = "#{message}")
private Message message;
...
}
@ManagedBean Anotación
@ManagedBeanmarca un bean como un bean gestionado con el nombre especificado en el atributo de nombre. Si no se especifica el atributo de nombre, entonces el nombre del bean administrado tomará por defecto la parte del nombre de clase del nombre de clase completo. En nuestro caso, sería helloWorld.
Otro atributo importante es eager. Si eager = "true", el bean administrado se crea antes de que se solicite por primera vez; de lo contrario, se utiliza una inicialización "perezosa" en la que el bean se creará solo cuando se solicite.
Anotaciones de alcance
Las anotaciones de alcance establecen el alcance en el que se colocará el bean administrado. Si no se especifica el alcance, el bean por defecto solicitará el alcance. Cada alcance se analiza brevemente en la siguiente tabla.
S. No | Alcance y descripción |
---|---|
1 | @RequestScoped Bean vive mientras viva la solicitud-respuesta HTTP. Se crea a partir de una solicitud HTTP y se destruye cuando finaliza la respuesta HTTP asociada con la solicitud HTTP. |
2 | @NoneScoped Bean vive tanto como una sola evaluación EL. Se crea tras una evaluación EL y se destruye inmediatamente después de la evaluación EL. |
3 | @ViewScoped Bean vive mientras el usuario interactúe con la misma vista JSF en la ventana / pestaña del navegador. Se crea tras una solicitud HTTP y se destruye una vez que el usuario devuelve la información a una vista diferente. |
4 | @SessionScoped Bean vive mientras viva la sesión HTTP. Se crea en la primera solicitud HTTP que involucra este bean en la sesión y se destruye cuando la sesión HTTP se invalida. |
5 | @ApplicationScoped Bean vive tanto como la aplicación web. Se crea en la primera solicitud HTTP que involucra este bean en la aplicación (o cuando la aplicación web se inicia y el atributo eager = true se establece en @ManagedBean) y se destruye cuando la aplicación web se apaga. |
6 | @CustomScoped Bean vive mientras viva la entrada del bean en el mapa personalizado, que se crea para este ámbito. |
@ManagedProperty Anotación
JSF es un marco de trabajo de inyección de dependencia (DI) estático simple. Utilizando@ManagedProperty anotación, la propiedad de un bean administrado se puede inyectar en otro bean administrado.
Aplicación de ejemplo
Creemos una aplicación JSF de prueba para probar las anotaciones anteriores para beans administrados.
Paso | Descripción |
---|---|
1 | Cree un proyecto con un nombre helloworld en un paquete com.tutorialspoint.test como se explica en el capítulo JSF - Crear aplicación . |
2 | Modifique HelloWorld.java como se explica a continuación. Mantenga el resto de los archivos sin cambios. |
3 | Cree Message.java en un paquete com.tutorialspoint.test como se explica a continuación. |
4 | Compile y ejecute la aplicación para asegurarse de que la lógica empresarial funcione según los requisitos. |
5 | Finalmente, compile la aplicación en forma de archivo war e impleméntela en Apache Tomcat Webserver. |
6 | Inicie su aplicación web utilizando la URL adecuada como se explica a continuación en el último paso. |
HelloWorld.java
package com.tutorialspoint.test;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
@ManagedBean(name = "helloWorld", eager = true)
@RequestScoped
public class HelloWorld {
@ManagedProperty(value = "#{message}")
private Message messageBean;
private String message;
public HelloWorld() {
System.out.println("HelloWorld started!");
}
public String getMessage() {
if(messageBean != null) {
message = messageBean.getMessage();
}
return message;
}
public void setMessageBean(Message message) {
this.messageBean = message;
}
}
Message.java
package com.tutorialspoint.test;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name = "message", eager = true)
@RequestScoped
public class Message {
private String message = "Hello World!";
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
home.xhtml
<!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">
<head>
<title>JSF Tutorial!</title>
</head>
<body>
#{helloWorld.message}
</body>
</html>
Una vez que esté listo con todos los cambios realizados, compilemos y ejecutemos la aplicación como lo hicimos en el capítulo JSF - Crear aplicación. Si todo está bien con su aplicación, esto producirá el siguiente resultado.