sanluis castillo jose david profesor

Transcripción

sanluis castillo jose david profesor
INSTITUTO POLITECNICO NACIONAL
ESCUELA SUPERIOR DE CÓMPUTO
ALUMNO:
SANLUIS CASTILLO JOSE DAVID
PROFESOR:
CIFUENTES ALVAREZ ALEJANDRO SIGFRIDO
MATERIA:
WEB APPLICATION DEVEPLOMENT
GRUPO: 3CM2
TURNO:
MATUTINO
JAVA SERVER FACES
(INTRODUCCION)
Java Server Faces (JSF) es una interfaz de usuario (UI) para las aplicaciones web Java. Está diseñado para
aliviar considerablemente la carga de la escritura y mantenimiento de las aplicaciones que se ejecutan en un
servidor de aplicaciones Java y prestar sus interfaces de usuario de nuevo a un cliente de destino. JSF
proporciona facilidad de uso de las siguientes maneras:

Hace que sea fácil de construir una interfaz de usuario de un conjunto de componentes de interfaz
reutilizables

Simplifica la migración de los datos de las aplicaciones hacia y desde la interfaz de usuario

Ayuda a administrar el estado de la interfaz de usuario a través de peticiones al servidor

Proporciona un modelo simple para el cableado de los eventos generados por el cliente al código de la
aplicación del lado del servidor

Permite que los componentes de interfaz de usuario que se construye fácilmente y volverse a utilizar.
1. Haga clic en el Proyecto Open (
), situado en la barra de herramientas principal del
IDE, o presione Ctrl + Mayús + O
2. En el cuadro de diálogo Abrir proyecto, vaya a la ubicación en el equipo donde se
almacena el proyecto de tutorial descomprimido. Selecciónelo y haga clic en Abrir
proyecto para abrirlo en el IDE.
3. Ejecutar el proyecto para ver cómo se ve en un navegador. O haga clic con
el jsfDemo nodo del proyecto en la ventana de proyectos y seleccione Ejecutar, o haga
clic en el proyecto de ejecución (
), situado en la barra de herramientas principal. El
proyecto se empaqueta y se implementa en el servidor TomCat, y su navegador se abre
para mostrar la página de bienvenida ( index.xhtml ).
4. Haga clic en el botón Enviar. La página de respuesta ( response.xhtml ) muestra
la siguiente manera: En la actualidad las páginas de bienvenida y la respuesta son
estáticos y, junto con el stylesheet.css archivo y duke.png imagen, son los
archivos de la aplicación sólo se puede acceder desde un navegador.
5. En la ventana de proyectos seleccione la el proyecto y digite Clic derecho, después haga
clic en propiedades, y aparecerá una nueva ventana.
6. Seleccione la categoría de Marcos, a continuación, haga clic en el botón Agregar. En el
cuadro de diálogo que aparece, seleccione JavaServer Faces continuación, haga clic en
Aceptar. Después de seleccionar JavaServer Faces, varias opciones de configuración
disponibles. En la pestaña Bibliotecas, puede especificar cómo el proyecto JSF tiene
acceso a las bibliotecas 2.0.La opción por defecto es el uso de las bibliotecas incluidas en
el servidor. Sin embargo, el IDE también los paquetes de las bibliotecas JSF 2.0. (Usted
puede seleccionar la opción Bibliotecas de registro si desea que su proyecto para utilizar
los mismos.)
7. Haga clic en la pestaña de Configuración. Puede especificar cómo el servlet Faces está
registrado en el descriptor de despliegue del proyecto. También puede indicar si desea
Facelets o páginas JSP para ser el utilizado en el proyecto.
8. Haga clic en Aceptar para finalizar los cambios y salir de la ventana Propiedades del
proyecto.
Después de añadir soporte JSF para el proyecto, el proyecto web.xml descriptor de despliegue
se ha modificado para tener el siguiente aspecto. (Los cambios en negrita ).
<Web-app version = "3.0" xmlns =
"http://java.sun.com/xml/ns/javaee~~HEAD=NNS" xmlns: xsi
= "http://www.w3.org/2001/XMLSchema-instance" xsi :
schemaLocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name> javax.faces.PROJECT_STAGE </ paramname>
<param-value> Desarrollo </ param-value>
</ Context-param>
<servlet>
<servlet-name> Faces Servlet </ servlet nombre->
<servlet-class> javax.faces.webapp.FacesServlet
</ servlet-class>
<load-on-startup> 1 </ load-on-startup>
</ Servlet>
<servlet-mapping>
<servlet-name> Faces Servlet </ servlet nombre->
<url-pattern> / faces / * </ url-pattern>
</ Servlet-mapping>
<session-config>
<session-timeout>
30
</ Session-timeout>
</ Session-config>
<welcome-file-list>
<welcome-file> enfrenta / index.xhtml </
welcome-file>
</ Welcome-file-list>
</ Web-app>
En cuanto a la página estática producida a partir de la ejecución del proyecto, se necesita un
mecanismo que determina si un número introducido por el usuario coincide con el seleccionado
en ese momento, y devuelve la visión de que es apropiado para este resultado. Utilizar el IDE
de bean gestionado asistente para crear un bean gestionado para este fin. Las páginas de
Facelets que se crean en la siguiente sección se necesitan para acceder al número que el usuario
escribe, y la respuesta generada. Para permitir esto, añade userNumber y de respuesta a las
propiedades del bean gestionado.

Usando el bean gestionado Asistente

Creación de un constructor

Agregar propiedades
Usando el bean gestionado Asistente
1. En la ventana de Proyectos, haga clic en el jsfDemo nodo del proyecto y seleccione
Nuevo> JSF Managed Bean. (Si Bean Managed no está en la lista, elija Otro. A
continuación, seleccione la opción de JSF Managed Bean de la categoría JavaServer
Faces. Haga clic en Siguiente.)
2. En el asistente, escriba lo siguiente:
o
Nombre de clase: UserNumberBean
o
Paquete: guessNumber
o
Nombre: UserNumberBean
o
Ámbito de aplicación: Sesión
3. Haga clic en Finalizar. El UserNumberBean clase se genera y se abre en el
editor. Tenga en cuenta las siguientes anotaciones (se muestra en negrita ):
package guessNumber;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name = "UserNumberBean")
@SessionScoped
public class UserNumberBean {
/** Creates a new instance of UserNumberBean */
public UserNumberBean() {
}
}
Creación de un constructor
El UserNumberBean constructor debe generar un número aleatorio entre 0 y 10 y almacenarlo
en una variable de instancia. Esta parte constituye la lógica de negocio para la aplicación.
1. Definir un constructor para la
UserNumberBean clase. Escriba el siguiente código.
public class UserNumberBean {
Integer randomInt;
/** Creates a new instance of UserNumberBean */
public UserNumberBean() {
Random randomGR = new Random();
randomInt = new Integer(randomGR.nextInt(10));
System.out.println("Duke's number: " + randomInt);
}
}
1. El código anterior genera un número aleatorio entre 0 y 10, y muestra el número en el
registro del servidor.
2. Fijar las importaciones. Para ello, haga clic en la insignia de pista (
margen izquierdo del editor, a continuación, elija la opción de
importar java.util.Random en la clase.
) que aparece en el
3. Ejecute el proyecto nuevo (haga clic en el proyecto de ejecución (
), o pulse F6; Fn-F6
en Mac). Cuando se ejecuta el proyecto, el archivo del servidor de registro se abrirá
automáticamente en la ventana de resultados.
4. Tenga en cuenta que no ve " de Duke número: "aparece en la salida (como se indica
desde
el
constructor). UnUserNumberBean objeto
no
se
creó
porque
JSF
utiliza instanciación perezosa por defecto. Es decir, los frijoles en ámbitos particulares
sólo se crea y se inicializa cuando se necesita la aplicación.
El Javadoc para el @ManagedBean anotación de los estados: Si el valor de la ansiosa
() atributo es cierto , y el administrado de frijol alcance el valor es la "aplicación",
el tiempo de ejecución debe crear instancias de esta clase cuando se inicia la aplicación. Esta
creación de instancias y el almacenamiento de la instancia que debe suceder antes de que las
solicitudes son atendidas. Si ganas no se especifica o falsa , o el administrado de frijol
alcance es otra cosa que la "aplicación", el valor predeterminado de instancias de "perezoso" y
el almacenamiento ámbito de la bean gestionado sucede.
5. Debido a que UserNumberBean es de ámbito de sesión, tiene que poner en práctica
el Serializable interfaz.
@ManagedBean(name="UserNumberBean")
@SessionScoped
public class UserNumberBean implements Serializable {
Use la tarjeta de identificación indirecta (
la clase.
) para importar
java.io.Serializable en
Agregar propiedades
Las páginas de Facelets que se crean en la siguiente sección se necesitan para acceder al
número
que
el
usuario
escribe,
y
la
respuesta
generada. Para
añade userNumber y la respuesta de las propiedades a la clase.
1. Empieza por declarar un entero llamado userNumber.
@ManagedBean(name="UserNumberBean")
@SessionScoped
public class UserNumberBean implements Serializable {
Integer randomInt;
Integer userNumber;
2. Haga clic derecho en el editor de código y elija Insertar. Elija getter y setter.
facilitar
esto,
3. Seleccione la userNumber : Integer. opción Haga clic en Generar. Tenga en
cuenta
que
el getUserNumber() y
agregan métodos en la clase.
setUserNumber(Integer
userNumber) se
4. Crear una respuesta de la propiedad. Declarar una cadena llamada de
respuesta.
@ManagedBean(name = "UserNumberBean")
@SessionScoped
public class UserNumberBean implements Serializable {
Integer randomInt;
Integer userNumber;
String respuesta;
5. Cree un método get para la respuesta . (Esta aplicación no requerirá de un
regulador.) Usted puede usar el código del IDE Generar emergente que se muestra en el
paso 2 para generar código de la plantilla. Para fines de este tutorial sin embargo, acaba
de pegar el siguiente método en la clase.
public String getResponse() {
if ((userNumber != null) && (userNumber.compareTo(randomInt) == 0)) {
//invalidate user session
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession)
context.getExternalContext().getSession(false);
session.invalidate();
return "Yay! You got it!";
} else {
return "<p>Sorry, " + userNumber + " isn't it.</p>"
+ "<p>Guess again...</p>";
}
}
1. El método anterior realiza dos funciones:
1. Comprueba si el número introducido por el usuario ( userNumber ) es igual al
número aleatorio generado por el período de sesiones ( randomInt ) y devuelve
una cadena de respuesta en consecuencia.
2. Se invalida la sesión del usuario si el usuario adivina el número correcto (es
decir, si userNumber igual randomInt). Esto es necesario para que un nuevo
número se genera si el usuario quiere volver a jugar.
2. Haga clic derecho en el editor y elegir las importaciones Fix. Declaraciones de
importación se crean automáticamente para:
o
javax.servlet.http.HttpSession
o
javax.faces.context.FacesContext
Cableado Gestionado Beans a las páginas
Uno de los propósitos principales de JSF es eliminar la necesidad de escribir código repetitivo
para gestionar POJO s y su interacción con los puntos de vista de la aplicación. Ya has visto un
ejemplo de esto en la sección anterior, donde una instancia JSF UserNumberBean objeto cuando
se ejecutó la aplicación. Este concepto se conoce como Inversión de Control (COI), que permite
que el recipiente para tomar la responsabilidad de la gestión de partes de la aplicación que de
otro modo sería necesario que el desarrollador escribir código repetitivo.
En la sección anterior se ha creado un bean gestionado al que genera un número aleatorio entre
0 y 10. También crea dos propiedades, userNumber y de respuesta , que representan la
entrada del número por el usuario, y la respuesta a una conjetura de usuario, respectivamente.
En esta sección, explorar cómo se puede utilizar el UserNumberBean y sus propiedades en las
páginas web. JSF le permite hacer esto utilizando su lenguaje de expresión (EL). Se utiliza el
lenguaje de expresión de obligar a los valores de propiedad a los componentes de interfaz de
usuario JSF que figuran en las páginas web de la aplicación. Esta sección también muestra cómo
se puede aprovechar de la función de JSF 2.0 's de navegación implícita para navegar entre el
índice y las páginas de respuesta.
El IDE proporciona soporte para este trabajo a través de su finalización de código y servicios de
documentación, que se puede invocar pulsando Ctrl-Espacio en los elementos del editor.
Comience
por
hacer
cambios
en index.xhtml,
a
continuación,
realizar
cambios
en response.xhtml. En ambas páginas, sustituir los elementos de formulario HTML con sus
homólogos de JSF, tal como se definen en la biblioteca de etiquetas HTML tag JSF . A
continuación, utilice el lenguaje de expresiones JSF para enlazar los valores de propiedad con
componentes de interfaz de usuario seleccionados.

index.xhtml

response.xhtml
index.xhtml
1. Abra el index.xhtml página en el editor. Haga doble clic en el index.xhtml nodo
desde la ventana de proyectos, o pulse las teclas Alt-Shift-O para usar la función Ir a
Archivo de diálogo. Tanto índice y las páginas de respuesta ya contienen los
componentes
JSF
ejercicio. Simplemente
interfaz
quite
de
y
usuario
comentar
los
que
usted
elementos
requiere
HTML
que
para
se
este
utilizan
actualmente.
2. Comente el elemento de formulario HTML. Para ello, seleccione el elemento de
formulario HTML como en la imagen de abajo, a continuación, pulse Ctrl-/ (⌘ - / en
Mac). Nota: Para poner de relieve, o bien haga clic y arrastre en el editor con el ratón, o
mediante el teclado, mantenga Mayús y pulse las teclas de flecha.
3. Elimine el componente JSF formulario HTML. Seleccione el componente al igual que en la
siguiente imagen, a continuación, pulse Ctrl-/. (⌘ - / en Mac) Tras descomentar el
componente
JSF
formulario
HTML,
el
editor
indica
que
la
<h:form> ,<h:inputText> ,
no han sido declaradas.
y
h < : CommandButton> etiquetas
4. Para declarar estos componentes, utilice la finalización de la IDE de código para agregar
el
de
espacio
de
nombres
de
biblioteca
de
etiquetas
a
la
página
<html> etiqueta. Coloque el cursor sobre cualquiera de las etiquetas no declaradas
y pulse Ctrl-Espacio. Sugerencias sobre el código de terminación y muestra la
documentación de apoyo. Haga clic en Enter.(Si hay múltiples opciones, asegúrese de
seleccionar la etiqueta que se muestra en el editor antes de hacer clic en ENTRAR.) El
JSF etiquetas HTML tag biblioteca de espacio de nombres se añade a la <html> etiqueta
(se muestra ennegrita a continuación), y desaparecen los indicadores de error
5. Utilice el lenguaje de expresiones JSF para obligar a UserNumberBean's
userNumber propiedad a a inputText componente. El valor atributo se puede
utilizar para especificar el valor actual del componente representado. Escriba el código
que aparece en negrita a continuación.
Lenguaje de expresión JSF utiliza el
# {} sintaxis. Dentro de estos delimitadores, se especifica
el nombre del bean gestionado y la propiedad del bean que desea aplicar, separados por un
punto (
. ). Ahora,
automáticamente
cuando los datos del formulario se envía al servidor, el valor se guarda
en
(setUserNumber
la
userNumber propiedad
() ). Además, cuando se
userNumber ya ha sido
la inputText componente.
para
6.
mediante
solicita
setter
la
de
la
propiedad
página
y
un
valor
establecido, el valor se mostrará automáticamente al mostrar
Especifique el destino de la petición de que se invoca cuando se hace clic en el botón de
formulario. En la versión HTML de la forma, que fueron capaces de hacer esto utilizando
la <form> etiqueta
de la
acción atributo. Con JSF, puede utilizar
elCommandButton 's la
acción atributo. Por otra parte, debido a la
característica de JSF 2.0 's de navegación implícita, sólo tiene que especificar el nombre
del archivo de destino, sin la extensión de archivo.
Escriba el código que aparece en negrita a continuación.
Las búsquedas en tiempo de ejecución para JSF un archivo con el nombre de respuesta . Se
supone que la extensión de archivo es el mismo que el utilizado por la extensión del archivo
desde el que se originó la solicitud ( de índice . XHTML ) y busca
la response.xhtml archivo en el mismo directorio que el archivo de origen (es decir, el
webroot).
Nota: JSF 2.0 tiene como objetivo facilitar las tareas de los desarrolladores mucho más fácil. Si
se utiliza JSF 1.2 para este proyecto, que tendría que declarar una regla de navegación en un
archivo de configuración de Rostros que tendría un aspecto similar al siguiente:
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-outcome>response</from-outcome>
<to-view-id>/response.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
7.
Prueba si la expresión anterior EL de hecho llame a la setUserNumber() método
cuando se procesa la solicitud. Para ello, el uso de Java depurador del IDE.
Cambie a la UserNumberBean clase (Presione Ctrl-Tab y seleccione el archivo de la
lista.) E stablecer un punto
de interrupción en el setUserNumber
() firma del
método. Usted puede hacer esto haciendo clic en el margen izquierdo. A exhibidores de
tarjetas rojas, lo que indica un punto de interrupción método se ha establecido.
8. Haga clic en el Proyecto de Depuración (
), situado en la barra de herramientas
principal del IDE. Una sesión de depuración se inicia, y la página de bienvenida del
proyecto se abre en el navegador.
Nota: Si aparece un proyecto de diálogo de depuración, seleccione la opción por defecto
"del lado del servidor Java" y haga clic en Depurar.
9. En el navegador, introduzca un número en el formulario y haga clic en el botón 'Enviar'.
10. Vuelva a la IDE e inspeccionar el UserNumberBean clase. El depurador se suspende en
el setUserNumber() método.
11. Abra la ventana del depurador variables (elija Ventana> Depuración> Variables, o pulse
Ctrl-Shift-1). Usted ve los valores de las variables para el punto en el que se suspende el
depurador
En la imagen superior, un valor de ' dos' se proporciona para el userNumber variable en
el setUserNumber () de la firma. (El número 2 se ha introducido en el formulario.) ' this 'se
refiere a la UserNumberBean objeto que fue creado para la sesión del usuario. Debajo de ella,
se ve que el valor de la userNumber propiedad es actualmente null .
12. En la barra de herramientas del depurador, haga clic en el Paso a paso (
) botón. El
depurador ejecuta la línea en la que actualmente está suspendido. Se actualizará la
ventana de variables, lo que indica cambios con respecto a la ejecución.
El
userNumber la propiedad se establece ahora en el valor introducido en el formulario.
response.xhtml
1. Abra el response.xhtml página en el editor. Haga doble clic en
el response.xhtml nodo desde la ventana de proyectos, o pulse las teclas Alt-Shift-O
para usar la función Ir a Archivo de diálogo.
2. Comente el elemento de formulario HTML. Destacar la apertura y el cierre de
HTML <form> etiquetas y el código entre ellos, a continuación, pulse Ctrl-/ (⌘ - / en
Mac).
Nota: Para poner de relieve, o bien haga clic y arrastre en el editor con el ratón, o bien,
utilizando el teclado, mantenga pulsada la tecla Mayús y pulse las teclas de flecha.
3. Elimine el componente JSF formulario HTML. Resalte la apertura y
cierre <h:form> etiquetas y el código entre ellos, a continuación, pulse Ctrl-/ (⌘ - / en
Mac).
En esta etapa, el código entre las <body> etiquetas es el siguiente:
<body>
<div id="mainContainer">
<div id="left" class="subContainer greyBox">
<h4>[ response here ]</h4>
<!--<form action="index.xhtml">
<input type="submit" id="backButton" value="Back"/>
</form>-->
<h:form>
<h:commandButton id="backButton" value="Back" />
</h:form>
</div>
<div id="right" class="subContainer">
<img src="duke.png" alt="Duke waving" />
<!--<h:graphicImage url="/duke.png" alt="Duke waving" />-->
</div>
</div>
</body>
4. Tras
descomentar
el
componente
JSF
formulario
HTML,
el
editor
indica
que
los <h:form> y <h:commandButton> etiquetas no han sido declaradas.
Para declarar estos componentes, utilice la finalización de la IDE de código para agregar el
espacio de nombres de biblioteca de etiquetas a la página de <html> etiqueta.
Coloque el cursor sobre cualquiera de las etiquetas no declaradas y pulse CtrlEspacio. Sugerencias sobre el código de terminación y muestra la documentación de apoyo.
Haga clic en Enter. (Si hay múltiples opciones, asegúrese de seleccionar la etiqueta que se
muestra en el editor antes de hacer clic en ENTRAR.) El JSF etiquetas HTML tag biblioteca de
espacio de nombres se añade a la <html> etiqueta (se muestra en negrita a continuación), y
desaparecen los indicadores de error .
<= "Html xmlns http://www.w3.org/1999/xhtml~~HEAD=NNS"
xmlns: h =
"http://java.sun.com/jsf/html~~HEAD=NNS" >
5. Especifique el destino de la petición de que se invoca cuando el usuario hace clic en el
botón del formulario. Quiere configurar el botón de modo que cuando un usuario hace
clic en él, él o ella se devuelve a la página de índice. Para lograr esto, utilice
el control CommandButton 's la acción atributo. Escriba el código que
aparece en negrita .
Nota: Al escribir
actión = "index",
usted está confiando en función de navegación
implícita JSF. Cuando un usuario hace clic en el botón de la forma, las búsquedas en tiempo de
ejecución para JSF un archivo con el nombre index . Se supone que la extensión de archivo
es el mismo que el utilizado por la extensión del archivo desde el que se originó la solicitud (
response.XHTML )
y busca la
index.xhtml archivo
archivo de origen (es decir, el webroot).
la
en el mismo directorio que el
6. Vuelva a colocar la estática "[respuesta aquí]" texto con el valor de
la UserNumberBean 's response de la propiedad. Para ello, utilice el lenguaje
de expresión JSF. Escriba el siguiente.
7. Ejecute el proyecto (haga clic en el proyecto de ejecución (
), o pulse F6; Fn-F6 en
Mac). Cuando aparezca la página de bienvenida en el navegador, escriba un número y
haga clic en enviar . Puede ver la página de respuesta muestra similar a la siguiente
Dos cosas están mal con el estado actual de la respuesta de la página:
1. Los html <p> etiquetas se muestra en el mensaje de respuesta.
2. El botón Atrás no se muestra en la ubicación correcta.
Los siguientes dos pasos corregir estos puntos, respectivamente.
8. Ajuste el <h:outputText> tag escapar atributo a false . Coloque el cursor
entre outputText y valor , insertar un espacio, a continuación, pulse Ctrl-Espacio
para invocar código de terminación. Desplácese hacia abajo para elegir elescape
de atributo y examinar la documentación.
Como se indica en la documentación, el escape de valor se establece en verdadero de forma
predeterminada. Esto significa que los caracteres que normalmente se analiza como html están
incluidos en la cadena, como se muestra arriba. Al establecer el valor false permite a los
caracteres que se pueden analizar como HTML que se representa como tal.
Haga clic en Enter, a continuación, escriba falsa como el valor.
9. Ajuste el
después
<h:form> tag prependId atributo a false . Sitúe el cursor
de ' m 'en <h:form> e insertar un espacio, a continuación, pulse
justo
Ctrl-
Espacio para invocar código de terminación. Desplácese hacia abajo para elegir el
prependId atributo y examinar la documentación. A continuación, haga clic en
Enter, y escribe
falsa como el valor.
<h:form prependId="false">
JSF se aplica Identificación interna para realizar un seguimiento de los componentes de interfaz
de usuario. En el presente ejemplo, si usted inspeccionar el código fuente de la página
representada, verás algo como lo siguiente:
<form id="j_idt5" name="j_idt5" method="post"
action="/jsfDemo/faces/response.xhtml" enctype="application/x-www-formurlencoded">
<input type="hidden" name="j_idt5" value="j_idt5" />
<input id="j_idt5:backButton" type="submit" name="j_idt5:backButton"
value="Back" />
<input type="hidden" name="javax.faces.ViewState"
id="javax.faces.ViewState" value="7464469350430442643:8628336969383888926" autocomplete="off" />
</form>
El id para el elemento del formulario es j_idt5 , y esta identificación se antepone a la
identificación para el botón Atrás incluida en el formulario (que se muestra
en negrita arriba). Debido a que el botón Atrás se basa en el # backButtonregla de estilo
(definido en stylesheet.css ), esta regla se obstruye cuando la Identificación del JSF se
antepone. Esto puede evitarse mediante el establecimiento de prependId a falso .
10. Ejecute el proyecto nuevo (haga clic en el proyecto de ejecución (
), o pulse F6; Fn-F6
en Mac). Introduzca un número en la página de bienvenida, a continuación, haga clic en
Enviar. La respuesta de la página ahora muestra el mensaje de respuesta sin
las <p> etiquetas, y el botón Atrás está colocado correctamente.
11. Haga clic en el botón Atrás. Debido a que el valor actual
de UserNumberBean 's userNumber propiedad está ligada a la
JSFinputText componente, el número que ya ha entrado ahora se muestra en el
campo de texto.
12. Revise el registro del servidor en la ventana de salida del IDE (Ctrl-4; ⌘ -4 en Mac) para
determinar cuál es el número correcto es conjetura.
Si usted no puede ver el registro del servidor por cualquier motivo, se puede abrir por el
cambio a la ventana de Servicios (Ctrl-5; ⌘ -5 en Mac) y la ampliación del nodo
Servidores. A continuación, haga clic en el servidor GlassFish en el que se implementa el
proyecto y seleccione Ver registro del servidor. Si usted no puede ver el número en el
registro del servidor, intente reconstruir la aplicación haciendo clic derecho en el nodo
del proyecto y la elección de limpiar y construir.
13. Escriba el número correcto y haga clic en Enviar. La aplicación compara la entrada con el
número que se guarda y muestra el mensaje correspondiente.
14. Haga clic en el botón Atrás de nuevo. Tenga en cuenta que el número introducido
anteriormente
ya
no
se
muestra
en
el
que UserNumberBean s ' getResponse
usuario actual al adivinar el número correcto.
campo
de
texto. Recordemos
la sesión del
() método invalida
Aplicación de una plantilla Facelets
Facelets se ha convertido en la tecnología de pantalla estándar de JSF 2.0. Facelets es un marco
de peso ligero de plantillas que es compatible con todos los componentes JSF interfaz de usuario
y se utiliza para construir y hacer que el árbol de componentes JSF de puntos de vista de la
aplicación. También proporciona apoyo para el desarrollo cuando los errores se producen por EL
que le permite inspeccionar el seguimiento de la pila, árbol de componentes, y las variables con
ámbito.
Aunque no se haya dado cuenta, los index.xhtml y response.xhtml archivos que han
estado trabajando hasta ahora en el tutorial son las páginas de Facelets. Páginas Facelets utilizar
el . xhtml extensión y ya se está trabajando en un proyecto JSF 2.0 (JSF 2.0 Las bibliotecas
incluyen los archivos JAR Facelets.), las vistas eran capaces de hacer correctamente el árbol de
componentes JSF.
El propósito de esta sección es para que se familiarice con Facelets de plantilla. Para los
proyectos que contienen muchos puntos de vista, a menudo es conveniente aplicar un archivo
de plantilla que define la estructura y la apariencia de múltiples puntos de vista.Cuando las
solicitudes de servicio, la aplicación inserta prepararse de forma dinámica el contenido en el
archivo de plantilla y envía el resultado al cliente. Aunque este proyecto sólo contiene dos
puntos de vista (la página de bienvenida y la respuesta de la página), es fácil darse cuenta de
que contienen una gran cantidad de contenido duplicado. Se puede factorizar el contenido
duplicado en una plantilla de Facelets, y crear archivos de plantilla de cliente para controlar el
contenido que es específica para las páginas de bienvenida y la respuesta.
El IDE proporciona un asistente de plantilla de Facelets para la creación de plantillas de Facelets,
y una plantilla de Facelets asistente para crear archivos de cliente que se basan en una
plantilla. En esta sección se hace uso de estos asistentes.
Nota: El IDE también proporciona un asistente de páginas JSF que le permite crear páginas
Facelets individuales para su proyecto. Para obtener más información.

Creación del archivo de plantilla de Facelets

Creación de archivos de plantilla de cliente
Creación del archivo de plantilla de Facelets
1. Crear un archivo de plantilla Facelets. Presione Ctrl-N (⌘ + N en Mac) para abrir el
asistente de archivos. Seleccione la categoría de JavaServer Faces, entonces Facelets de
plantilla. Haga clic en Siguiente.
2. Escriba en la plantilla para el nombre del archivo.
3. Elija entre cualquiera de los ocho estilos de diseño y haga clic en Finalizar. (Usted va a
utilizar la hoja de estilos existente, por lo que no importa qué estilo de diseño que usted
elija.) El
asistente
acompañamiento
genera
sobre
el template.xhtml archivos
la
base
de
su
y
selección,
hojas
y
lo
de
estilo
deposita
de
en
un recursos > CSS dentro de la carpeta del proyecto Webroot.
Después de completar el asistente, el archivo de plantilla se abre en el editor. Para ver la
plantilla en un navegador, haga clic derecho en el editor y seleccione Ver.

4.
Examine el archivo de plantilla de marcado. Tenga en cuenta los siguientes puntos:
-
El Facelets biblioteca de etiquetas se declara en la página <html> etiqueta. La
biblioteca de etiquetas tiene lainterfaz de usuario prefijo.
La página utiliza el Facelets <h:head> y <h:body> etiquetas html en lugar de
la <head> y <body> etiquetas.Mediante el uso de estas etiquetas, Facelets es capaz de
construir un árbol de componentes que abarca toda la página.

La página hace referencia a las hojas de estilo que se han creado también cuando se ha
completado el asistente.

<ui:insert> etiquetas se utilizan en el cuerpo de la página para cada compartimento
asociado con el estilo de diseño que ha elegido. Cada <ui:insert> etiqueta tiene
un nombre de atributo que identifica el compartimiento. Por ejemplo:
5. Reexaminar las welcome y la response de las páginas. El contenido único que cambia
entre las dos páginas es el título y el texto contenido en el cuadrado gris. La plantilla,
por lo tanto, puede proporcionar todo el contenido restante.
6. Reemplace todo el contenido de su archivo de plantilla con el contenido a continuación.
<?xml version='1.0' encoding='UTF-8' ?>
<!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"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="css/stylesheet.css" rel="stylesheet" type="text/css" />
<title><ui:insert name="title">Facelets Template</ui:insert></title>
</h:head>
<h:body>
<div id="left">
<ui:insert name="box">Box Content Here</ui:insert>
</div>
</h:body>
</html>
El código anterior implementa los siguientes cambios:
o
El proyecto de stylesheet.css archivo sustituye las referencias de hojas de estilo de
plantillas creadas por el asistente.
o
Todos los <ui:insert> etiquetas (y sus contienen clave de búsqueda) se han
eliminado, a excepción de uno llamado cuadro .
o
Un <ui:insert> par de etiquetas ha sido colocado alrededor del título de la página, y
el nombre del título .
7. Copie el código correspondiente, ya sea del index.xhtml o response.xhtml archivo
en la plantilla. Añadir el contenido se muestra en negrita de abajo para el archivo de
plantilla <h:body> etiquetas.
Ejecute el proyecto. Cuando la página de bienvenida se abre en el navegador, modificar la
dirección URL a la siguiente:
http://localhost:8080/jsfDemo/faces/template.xhtml
8. El archivo de plantilla se muestra como sigue:
El proyecto contiene un archivo de plantilla que proporciona el aspecto y la estructura de todos
los puntos de vista. Ahora puede crear archivos de clientes que llaman a la plantilla.
Creación de archivos de plantilla de cliente
Crear archivos de plantilla de cliente para las páginas de bienvenida y la respuesta. Nombre del
archivo del cliente plantilla para la página de bienvenida greeting.xhtml . Para la página de
respuesta, el archivo será response.xhtml .
greeting.xhtml
1. Presione Ctrl-N (⌘ + N en Mac) para abrir el asistente de New File. Seleccione la
categoría JavaServer Faces, a continuación, seleccione Cliente Facelets de plantilla. Haga
clic en Siguiente.
2. Tipo de saludo para el nombre del archivo.
3. Haga clic en el botón Examinar situado junto al campo de plantilla, a continuación, utilice
el cuadro de diálogo que muestra para ir a la template.xhtml archivo que creó en la
sección anterior.
4. Haga clic en Finalizar. El nuevo greeting.xhtml plantilla de ficha de cliente se genera
y se muestra en el editor.
5. Examine el marcado.
Las referencias de clientes de la plantilla de archivo de una plantilla con
el <ui:composition> etiqueta de plantilla deatributo. Debido a que la plantilla
contiene <ui:insert> etiquetas para el título y el cuadro de , este cliente plantilla
contiene <ui:define> etiquetas para estos dos nombres. El contenido que se especifique entre
los <ui:define> etiquetas es lo que se insertará en la plantilla entre
los <ui:insert> etiquetas del nombre correspondiente.
6. Especifique saludo como el título para el archivo
7. Cambie a la
index.xhtml archivo (presione Ctrl-Tab) y copiar el contenido de lo
que normalmente aparecería en el cuadrado gris que aparece en la página
representada. A continuación, volver a greeting.xhtml y pegarlo en el archivo
del cliente de la plantilla.
8. Declarar el JSF biblioteca de etiquetas HTML para el archivo. Coloque el cursor sobre
cualquiera de las etiquetas que se marcan con un error (de cualquier marca a través del
"
h prefijo '), y pulse Ctrl-Espacio. A continuación, seleccione la etiqueta de la lista de
sugerencias de finalización de código. El espacio de nombres de biblioteca de etiquetas
se agregan al archivo de
<html> etiqueta, y desaparecen los indicadores de error.
Si coloca el cursor después de la '
m 'en <h:form> y pulse Ctrl-Space, el espacio de nombres
se agrega automáticamente al archivo. Si sólo hay una opción lógica está disponible cuando se
pulsa Ctrl-Space, se aplica inmediatamente al archivo. JSF bibliotecas de etiquetas se declaran
automáticamente cuando se invoca la finalización de código en las etiquetas.
response.xhtml
Debido a que el proyecto ya contiene un archivo denominado response.xhtml , y ya que usted
sabe lo que la plantilla de archivo del cliente debe ser similar ahora, modificar el
existente response.xhtml para convertirse en el archivo del cliente de la plantilla.(Para fines
de este tutorial, simplemente copia y pega el código provisto.)
1. Abra response.xhtml en el editor. (Si ya está abierto, pulse Ctrl-Tab y elegirlo.)
Reemplace el contenido de todo el archivo con el código de abajo.
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<body>
<ui:composition template="./template.xhtml">
<ui:define name="title">
Response
</ui:define>
<ui:define name="box">
<h4><h:outputText escape="false" value="#{UserNumberBean.response}"/></h4>
<h:form prependId="false">
<h:commandButton id="backButton" value="Back" action="greeting" />
</h:form>
</ui:define>
</ui:composition>
</body>
</html>
Tenga en cuenta que el archivo es idéntico al greeting.xhtml , excepto por el contenido
especificado entre los<ui:define> etiquetas para el título y el cuadro .
2. En el proyecto web.xml descriptor de despliegue, modificar la entrada del archivo de
bienvenida, para quegreeting.xhtml es la página que se abre cuando se ejecuta la
aplicación. En la ventana de proyectos, haga doble clic en los archivos de
configuración> web.xml para abrirlo en el editor de . En la ficha Páginas, cambie el
campo Archivos Bienvenido a caras o greeting.xhtml .
3. Ejecutar el proyecto para ver cómo se ve en un navegador. Pulse F6 (Fn-F6 en Mac), o
haga clic en el proyecto de ejecución (
), situado en la barra de herramientas
principal. El proyecto se implementa en el servidor GlassFish, y se abre en un
navegador.
Con la plantilla de Facelets y los archivos de plantilla de cliente, la aplicación se comporta
exactamente de la misma manera como lo hizo anteriormente. Al factorizar código duplicado en
las páginas de bienvenida y la respuesta de la aplicación, se logró reducir el tamaño de la
aplicación y se elimina la posibilidad de escribir más código duplicado, debe ser añadido más
páginas en un momento posterior. Esto puede hacer que el desarrollo sea más eficiente y más
fácil de mantener cuando se trabaja en grandes proyectos.

Documentos relacionados

instituto politecnico nacional escuela superior de computó

instituto politecnico nacional escuela superior de computó 5. Cree un método get() para response . (Esta aplicación no requerirá setter().) Se puede usar el código que genera la IDE Generar como se muestra en el paso 2 para generar código de la plantilla....

Más detalles