PDF de programación - Sesión 3: Ciclo de vida JSF. Conversores. Validadores. Eventos

Imágen de pdf Sesión 3: Ciclo de vida JSF. Conversores. Validadores. Eventos

Sesión 3: Ciclo de vida JSF. Conversores. Validadores. Eventosgráfica de visualizaciones

Publicado el 22 de Enero del 2019
494 visualizaciones desde el 22 de Enero del 2019
3,9 MB
55 paginas
Creado hace 12a (01/01/2012)
Experto Universitario Java Enterprise

JavaServer Faces

•Sesión 3: Ciclo de vida JSF.
Conversores. Validadores.
Eventos.

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Índice
• El ciclo de vida de una petición
• Validaciones

• Custom validators
• JSR 303

• Conversiones

• Custom converters
• Gestión de eventos

• Validación mediante eventos
• Toma de decisiones

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

2

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

El ciclo de vida visto desde fuera

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

3

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

El ciclo de vida visto desde dentro

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

4

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Programa ejemplo: calculadora

Componentes que se
hacen visibles y se ocultan

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

5

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Código de la vista

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

6

<f:view> <h:form id="calcForm"> <h:panelGrid columns="3"> <h:outputLabel value="Primer número"/> <h:inputText id="firstNumber" ! value="#{calcBean.firstNumber}" ! required="true"/> <h:message for="firstNumber"/> ... <h:commandButton value="Calcular" action="#{calculatorController.doOperation}"/> <h:outputText value="Resultado: #{calculatorBB.result}"/><br/> <p></p> <h:commandLink rendered="#{calculatorController.newOperationCommandRendered}" action="#{calculatorController.doNewOperation}" value="Cambiar operación"/> ... </h:form> </f:view> Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Componentes (1)

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

7

<h:form id="calcForm"> <h:panelGrid columns="3"> <h:outputLabel value="Primer número"/> <h:inputText id="firstNumber" ! value="#{calcBean.firstNumber}" ! required="true"/> <h:message for="firstNumber"/> ... <h:commandButton value="Calcular" action="#{calculatorController.doOperation}"/> <h:outputText value="Resultado: #{calculatorBB.result}"/><br/> <p></p> <h:commandLink rendered="#{calculatorController.newOperationCommandRendered}" action="#{calculatorController.doNewOperation}" value="Cambiar operación"/> ...</h:form> Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Componentes (2)

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

8

<h:form rendered="#{calculatorController.selectOperationFormRendered}"> <h:selectOneListbox id="operation" required="true" !! value="#{calculatorBB.operation}"> <f:selectItem itemValue="+" itemLabel="suma"/> <f:selectItem itemValue="-" itemLabel="resta"/> <f:selectItem itemValue="*" itemLabel="multiplicación"/> <f:selectItem itemValue="/" itemLabel="división"/> </h:selectOneListbox><br/> <h:commandButton action="#{calculatorController.doSelectOperation}" value="Selecciona operación"/></h:form> Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Renderizado de los componentes
• Se define con las propiedades booleanas newOperationRendered

y selectOperationFormRendered en el bean
calculatorController

• Las acciones modifican el valor booleano de esas propieades

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

9

<f:view> <h:form id="calcForm"> ... <h:commandLink rendered="#{calculatorController.newOperationCommandRendered}" action="#{calculatorController.doNewOperation}" value="Cambiar operación"/> ... </h:form> <h:form rendered="#{calculatorController.selectOperationFormRendered}"> <h:commandButton action="#{calculatorController.doSelectOperation}" value="Selecciona operación"/> </h:form> </f:view> Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

¿Cuándo se crea el árbol de componentes?

• En la primera petición (http://localhost:8080/calculator) se
crea el árbol de componentes a partir del fichero
calculator.xhtml
• El árbol de componentes (vista) se guarda en el
servidor.
• En la segunda petición (cuando el usuario pincha en
el enlace “calcular” y se envía el formulario al
servidor), JSF obtiene el árbol creado anteriormente,
lo guarda en la petición y le aplica el ciclo de vida a la
petición.

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

10

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Controlador (1)

Propiedades

Mostrando
y ocultando

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

11

public class CalculatorController { private CalculatorBB numbers; private CalculatorBO calculator = new CalculatorBO(); private boolean selectOperationFormRendered=false; private boolean newOperationCommandRendered=true; ... // getters y setters public String doNewOperation() { selectOperationFormRendered=true; newOperationCommandRendered=false; return null; } public String doSelectOperation() { selectOperationFormRendered=false; newOperationCommandRendered=true; doOperation(); return null; } ... Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise
Controlador (2)

Obtenemos
los valores
introducidos
por el usuario
leyéndolos del
backing bean,

llamamos
a la capa
de negocio

y ponemos
el resultado
en el backing
bean.

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

12

...public String doOperation() { String operation = numbers.getOperation(); int firstNumber = numbers.getFirstNumber(); int secondNumber = numbers.getSecondNumber(); int result = 0; String resultStr = "OK"; if (operation.equals("+")) result = calculator.add(firstNumber, secondNumber); else if (operation.equals("-")) result = calculator.substract(firstNumber, secondNumber); else if (operation.equals("*")) result = calculator.multiply(firstNumber, secondNumber); else if (operation.equals("/")) result = calculator.divide(firstNumber, secondNumber); else resultStr="not-OK"; numbers.setResult(result); return resultStr; } Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Conversión de datos
• En una aplicación web, todos los datos se introducen
como texto
• JSF convierte:

• los datos a tipos java en la fase Apply Request Values
• los tipos java a String en la fase Render Response

• JSF usa una serie de conversores por defecto para tipos
básicos, aunque podemos escogerlos.

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

13

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

específicos (DNI, Tarjetas de crédito, ...)

Custom converters
• En ocasiones podemos necesitar conversores más
• Para esos casos, podemos crearnos nuestros propios
• Deben implementar la interfaz javax.faces.convert.FacesConverter.
• Proporciona los métodos:

conversores.

• Object getAsObject(FacesContext context, UIComponent
component, String newValue):

String Objeto.
Si no puede convertir ConverterException

• String getAsString(FacesContext context, UIComponent
component, Object value):

Objeto String

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

14

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Custom converters
• Un conversor se define mediante la anotación
@FacesConverter(“ID_Conversor”)

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

15

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Custom converters
• Haremos uso de un custom converter mediante el tag
<f:converter>

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

16

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Custom converters
• Podemos obviar el uso del tag <f:converter> si
especificamos en la clase conversora que se aplique
siempre para un tipo de objeto.

• Así, será la implementación de JSF quien busque
conversores para este tipo de objeto.

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

17

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Custom converters
• Podemos pasar atributos a nuestro conversor
mediante el tag <f:attribute>

• El código en el conversor será

Componentes de presentación

© 2012-2013 Depto. Ciencia de la Computación e IA

Sesión 3

18

Experto Universitario Java Enterprise
Especialista Universitario Java Enterprise

Validadores

• Se encargan de que los datos introducidos tengan los
valores esperados.

Componentes de presentación

© 2012-2013 Dep
  • Links de descarga
http://lwp-l.com/pdf14946

Comentarios de: Sesión 3: Ciclo de vida JSF. Conversores. Validadores. Eventos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad