Publicado el 22 de Enero del 2019
680 visualizaciones desde el 22 de Enero del 2019
1,9 MB
53 paginas
Creado hace 12a (01/01/2012)
Experto Universitario Java Enterprise
JavaServer Faces
•Sesión 2: MVC en JSF
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Índice
• Vista: componentes para la GUI
• Modelo: beans de respaldo: backing beans
• Validación, conversión y tratamiento de errores
• Controlador: Acciones y navegación entre páginas
• Expresiones EL
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
2
Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Funcionamiento básico de JSF
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
3
Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Un primer ejemplo
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
4
Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Vista
• En Struts la vista se define mediante páginas y la
aplicación se mueve de una página a otra.
• En JSF la vista se define mediante vistas (view) que
contienen componentes.
• El controlador puede decidir qué componentes son
visibles, e ir mostrando y escondiendo componentes.
• La vista se define mediante una página HTML con
etiquetas especiales <f:> (componentes núcleo de
JSF) y <h:> (componentes HTML)
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
5
Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Vista: página JSF
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Fichero selec-cursos.xhtml
6
Sesión 2
<f:view> <h:form> <table> <tr> <td>Dirección e-mail:</td> <td><h:inputText value="#{selecCursosBean.email}" /></td> </tr> <tr> <td>Tecnologías Java de interés</td> <td><h:selectManyCheckbox value="#{selecCursosBean.cursosId}"> <f:selectItem itemValue="JSP" itemLabel="Servlets y JSP" /> <f:selectItem itemValue="Struts" itemLabel="Struts" /> <f:selectItem itemValue="JSF" itemLabel="JSF" /> <f:selectItem itemValue="JPA" itemLabel="JPA" /> </h:selectManyCheckbox></td> </tr> </table> <h:commandButton value="Enviar" action="#{selecCursosHandler.grabarDatosCursos}"/> </h:form></f:view>Beans gestionados Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Modelo: Beans gestionados
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
7
public class SelecCursosBackingBean { private String email; private String[] cursosId; public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String[] getCursosId() { return cursosId; } public void setCursosId(String[] cursosId) { this.cursosId = cursosId; }} Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Declaración en faces-config.xml
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
8
...<managed-bean> <managed-bean-name>selecCursosBB</managed-bean-name> <managed-bean-class> jtech.jsf.SelecCursosBackingBean </managed-bean-class> <managed-bean-scope>session</managed-bean-scope></managed-bean><managed-bean> <managed-bean-name>selecCursosHandler</managed-bean-name> <managed-bean-class>jtech.jsf.SelecCursosHandler </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>datosCursos</property-name> <value>#{selecCursosBB}</value> </managed-property></managed-bean>... Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Declaración en JSF 2.0 (contenedor web)
• Anotaciones en la propia clase Java
Nombre por defecto:
selecCursosBean
Definimos nombre del
bean
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
9
@ManagedBean@SessionScopedpublic class SelecCursosBean { private String email; private String[] cursosId;...@ManagedBean(name=“selecCursos”)@SessionScopedpublic class SelecCursosBean { private String email; private String[] cursosId;... Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Declaración en JSF 2.0 (serv. aplicaciones)
• Anotaciones en la propia clase Java
Nombre por defecto:
selecCursosBean
Definimos nombre del
bean
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
10
@Named@SessionScopepublic class SelecCursosBean { private String email; private String[] cursosId;...@Named(“selecCursos”)@SessionScopepublic class SelecCursosBean { private String email; private String[] cursosId;... Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Ámbito de vida de los beans gestionados (I)
• Petición: Se define con el valor request en el faces-config.xml o
con la anotación @RequestScoped en la clase. El bean se asocia a una
petición HTTP. Cada nueva petición crea un nuevo bean y lo asocia con la
página. Se usa para el paso de mensajes que no sea necesario propagar
a lo largo de la aplicación.
• Sesión: Se define con el valor session en el faces-config.xml o
con la anotación @SessionScoped en la clase. El bean se asocia a una
sesión definida con el API de Servlets. Se usa paraconservar elementos
que queremos mantener a lo largo de la aplicación como, por ejemplo: un
usuario logueado.
• Aplicación: Se define con el valor application y con la anotación
@ApplicationScoped. Los beans con este ámbito viven asociados a la
aplicación. Definen singletons que se crean e inicializa sólo una vez, al
comienzo de la aplicación. Se usa para guardar características comunes
compartidas y utilizadas por el resto de los beans de la aplicación (ej:
valor del IVA en un e-commerce)
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
11
Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Ámbito de vida de los beans gestionados (II)
• Vista: Se define con el valor view en el faces-config.xml o la
anotación @ViewScoped en la clase. Un bean en este ámbito persistirá
mientras no naveguemos a otra vista. Se suele usar en páginas Ajax.
• Custom: Se define con la anotación @CustomScoped(“#{expt}”) en
la clase. Definimos un mapa en el que nuestra aplicación será la
responsable de la eliminación de los elementos. Ejemplo: un ámbito
“registro”, donde al finalizar el proceso de registro se eliminarán los datos
introducidos por el usuario.
• Conversación: Se define con la anotación @ConversationScoped.
Ligado a una ventana o pestaña concreta del navegador. Una sesión
puede mantener varias conversaciones en distintas páginas. Es propio de
CDI, no de JSF.
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
12
Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Inicialización de los beans (I)
• En el constructor de la clase Java
• En el fichero faces-config con expresiones EL
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
13
public class SelecCursosBean { private String email; private String[] cursosId; public SelecCursosBean() { email="Introduce tu e-mail"; } ...<managed-bean> <managed-bean-name>selecCursosBean</managed-bean-name> <managed-bean-class>org.especialistajee.jsf.SelecCursosBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>email</property-name> <value>Introduce tu e-mail</value> </managed-property></managed-bean> Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Inicialización de los beans (II)
• Con JSF 2.0 podemos combinar ambos métodos
• Expresiones EL
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
14
@ManagedBean@RequestScopedpublic class SelecCursosBean { @ManagedProperty(value="Introduce tu e-mail") private String email; private String[] cursosId; ...@ManagedBean@RequestScopedpublic class SelecCursosBean { @ManagedProperty(value="#{1+2+3+4}") private String email; private String[] cursosId; ... Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Relaciones entre beans (I)
• En el fichero de configuración, mediante expresiones
EL
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
15
<managed-bean><managed-bean-name>entradaBean</managed-bean-name><managed-bean-class>org.especialistajee.beans.EntradaBean</managed-bean-class><managed-bean-scope>session</managed-bean-scope><managed-property><property-name>usuario</property-name><value>#{usuarioBean}</value></managed-property></managed-bean> Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Relaciones entre beans (II)
• Las expresiones EL también permiten asociar un
bean a otro en tiempo de inicialización
Componentes de presentación
© 2012-2013 Depto. Ciencia de la Computación e IA
Sesión 2
16
@ManagedBean@RequestScopedpublic class SelecCursosController { @ManagedProperty(value="#{selecCursosBean}") private SelecCursosBean datosCursos; public void setDatosCursos(SelecCursosBean datosCursos) { this.datosCursos = datosCursos; } public SelecCursosBean getDatosCursos() { return datosCursos; } ... Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Relaciones entre beans (III)
• Si nuestro servidor tiene soporte de CDI, la opción
recomendada es:
Component
Comentarios de: Sesión 2: MVC en JSF - JavaServer Faces (0)
No hay comentarios