En este primer post sobre managed beans, vamos a ver qué son y cómo declararlos.
Como ya hemos visto anteriormente, JSF separa la capa de presentación de la lógica de negocio. Para que nuestras páginas JSF puedan acceder a esta lógica, utilizamos managed beans.
Un bean es un POJO (Plain Old Java Object), algo tan sencillo como una clase que tiene un constructor público sin argumentos (constructor por defecto) y sus propiedades tienen asociados sus correspondientes métodos get/set .Si en una clase no indicamos ningún constructor, el compilador le añade este constructor por defecto. Hay que tener en cuenta que si escribimos en la clase un constructor no vacio, ya no se nos añadirá en tiempo de compilación este constructor por defecto.
No necesitamos instanciarlos con new(), ya que son inicializados por su contenedor en tiempo de ejecución cuando la aplicación los necesita. Una página JSF lee los valores de las propiedades del bean que tiene asociada, y cuando se hace un post de un formulario, se guardan sus valores en el bean (en un post posterior veremos cómo funciona el ciclo de vida de JSF y sabremos en qué momento se guardan esos valores).
Como ya hemos visto anteriormente, JSF separa la capa de presentación de la lógica de negocio. Para que nuestras páginas JSF puedan acceder a esta lógica, utilizamos managed beans.
Un bean es un POJO (Plain Old Java Object), algo tan sencillo como una clase que tiene un constructor público sin argumentos (constructor por defecto) y sus propiedades tienen asociados sus correspondientes métodos get/set .Si en una clase no indicamos ningún constructor, el compilador le añade este constructor por defecto. Hay que tener en cuenta que si escribimos en la clase un constructor no vacio, ya no se nos añadirá en tiempo de compilación este constructor por defecto.
No necesitamos instanciarlos con new(), ya que son inicializados por su contenedor en tiempo de ejecución cuando la aplicación los necesita. Una página JSF lee los valores de las propiedades del bean que tiene asociada, y cuando se hace un post de un formulario, se guardan sus valores en el bean (en un post posterior veremos cómo funciona el ciclo de vida de JSF y sabremos en qué momento se guardan esos valores).
¿Cómo declaramos un bean?
Desde el fichero faces-config.xml o con anotaciones.
- Utilizando el fichero faces-config.xml
Siendo desarrolladores, puede que alguna vez le hayamos cogido manía a los ficheros de configuración .xml... sí, no pasa nada por reconocerlo, también somos humanos ;D Por eso, desde que Java 5 introdujo las anotaciones, se nos abrió un mundo nuevo de luz y de color :)
- Utilizando anotaciones
Una vez declarado nuestro bean de ejemplo, una página JSF puede acceder a él utilizando el nombre userBean ya que, si no indicamos ningún nombre concreto, por defecto se le asigna el nombre de la clase con la primera letra en minúscula.
En este nuevo ejemplo vemos que ahora el nombre del bean es user.
En posteriores post seguiremos profundizando sobre los managed beans.
- Utilizando el fichero faces-config.xml
<managed-bean> <managed-bean-name>userBean</managed-bean-name> <managed-bean-class>com.examples.UserBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
Siendo desarrolladores, puede que alguna vez le hayamos cogido manía a los ficheros de configuración .xml... sí, no pasa nada por reconocerlo, también somos humanos ;D Por eso, desde que Java 5 introdujo las anotaciones, se nos abrió un mundo nuevo de luz y de color :)
- Utilizando anotaciones
package com.examples; import javax.faces.bean.ManagedBean import javax.faces.bean.SessionScoped @ManagedBean @SessionScoped public class UserBean {...}
Una vez declarado nuestro bean de ejemplo, una página JSF puede acceder a él utilizando el nombre userBean ya que, si no indicamos ningún nombre concreto, por defecto se le asigna el nombre de la clase con la primera letra en minúscula.
@ManagedBean(name="user") @SessionScoped public class UserBean {...}
En este nuevo ejemplo vemos que ahora el nombre del bean es user.
En posteriores post seguiremos profundizando sobre los managed beans.
excelente post +1
ResponderEliminar