Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Información 2
Clase 12
Java Server Faces
Que es JSF?
Un set de controles web y sus handlers
asociados?
Un framework para la capa de presentacion,
independiente del dispositivo?
Un Struts mejorado?
Componentes custom
o JSF hace facil combinar una GUI compleja, en un
control custom reutilizable
Soporte para otras tecnologias de despliegue
o JSF no esta limitado a HTML sobre HTTP
Peor instalacion
o Falta de struts-blank.war
Falta de soporte para GET
<f:view>
HTML markup
<h:form>
HTML markup and h:blah tags
</h:form>
HTML markup
</f:view>
<f:view>
<BODY>
<h:form>
...
</h:form>
</BODY>
</f:view>
<filter>
<filter-name>faces-redirect-filter</filter-name>
<filter-class>
coreservlets.FacesRedirectFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>faces-redirect-filter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
INCO - Facultad de Ingeniería – Montevideo, Uruguay 45
Flujo de control en JSF (de
nuevo)
Se instancia un bean
o Los beans se configuran en el archivo faces-
config.xml
Se invoca el metodo del action controller
o Es el valor del atributo action de un
h:commandButton
El action method retorna una condicion
(string)
o Es un string que matchea from-outcome en las
reglas de navegacion de faces-config.xml
}
INCO - Facultad de Ingeniería – Montevideo, Uruguay 50
Modificamos
<%@ el form
taglib uri="http://java.sun.com/jsf/core"
prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html"
prefix="h" %>
<f:view>
…
<h:form>
First name: <h:inputText/><BR>
Last name: <h:inputText/><BR>
...
<h:commandButton
value="Sign Me Up!"
action="#{healthPlanController.signup}"/>
</h:form>…
</f:view>
INCO - Facultad de Ingeniería – Montevideo, Uruguay 51
Declaramos el bean
<faces-config>
<managed-bean>
<managed-bean-name>
healthPlanController
</managed-bean-name>
<managed-bean-class>
coreservlets.HealthPlanController
</managed-bean-class>
<managed-bean-scope>
request
</managed-bean-scope>
</managed-bean>
</faces-config>
ExternalContext context =
FacesContext.getCurrentInstance()
.getExternalContext();
HttpServletRequest request =
(HttpServletRequest)context.getRequest();
HttpServletResponse response =
(HttpServletResponse)context.getResponse();
INCO - Facultad de Ingeniería – Montevideo, Uruguay 55
Algunos puntos extra
Podemos mezclar en el faces-config.xml la
definicion de los beans y las reglas de
navegacion
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/WEB-INF/results/success.jsp</to-view-id>
</navigation-case>
</navigation-rule>
prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html"
prefix="h" %>
<f:view>
<!DOCTYPE …>
<HTML>
…
<h:outputText
value="#{beanName.propertyName}"/>
…
</HTML>
</f:view>
INCO - Facultad de Ingeniería – Montevideo, Uruguay 74