Home

JavaServer Faces(JSF)

image

Contents

1. viendo en los ejemplos FacesUtil de cualquier manera ser a FacesContext getCurrentInstance getExternalContext getSessionMap get key FacesContext getCurrentInstance getExternalContext getSessionMap put key value Uso de datatable Las tablas din micas que se pueden mostrar con el tag h dataTable reciben un objeto de tipo List o DataModel con una colecci n de beans o pojos o un mapa de objetos que los contiene Por ejemplo para una tabla que contenga tres campos ID Nombre y Valor Se crear a una clase wrapper que represente cada fila de la tabla una clase simple con los campos privados que se accedan con los m todos p blicos getters y setters Como los datos de la bbdd pueden ser nulos se evita utilizar tipos de datos primitivos Se puede usar el tag h commandLink o h commandButton en una o m s columnas para llamar a un action de MiBean java y pasarle el objeto MiData apropiado esto es m s r pido que pasarlo con el tag f attribute con un ID para obtener el elemento seleccionado directamente de la base de datos Para conocer la fila seleccionada se usa el binding de h dataTable para din micamente sincronizar el estado de la tabla con el backing bean Page 14 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF Se muestra un ejemplo lt h form gt lt h dataTable value myBean myDataList var myDataltem binding myBean myDataTable gt lt h column gt lt f facet n
2. Shale proporcionan esta posibilidad Relaci n con otros subsistemas JSF es una especificaci n y como tal no tiene ninguna incompatibilidad con otros sistemas Por ello se pueden escoger los desarrollos que se desean para las necesidades de cada uno el de jakarta el de sun el de oracle o incluso el de IBM Habr a que estudiar cada uno de estos desarrollos para saber cu les son las incompatibilidades que cada uno hace constar Limitaciones que impone la especificaci n e Todo desarrollo de esta especificaci n tiene que soportar JSP como tecnolog a de vista Pero JSF no obliga a que esta sea la opci n por defecto De hecho hay otros proyectos de c digo abierto que proporcionan la posibilidad de escribir la capa cliente sin usar JSP como son Facelets y Clay Concretamente con Facelets podr amos escribir toda esta capa en HTML e El hecho de que JSP sea una tecnolog a obligatoria hace que podamos seguir desarrollando con las etiquetas JSP con las que estemos m s acostumbrados como pueda ser JSTL e Puede coexistir con Struts en una misma aplicaci n web Esto lo hace especialmente importante para las aplicaciones ya escritas en Struts que quieran ir migrando poco a poco a JSF Se puede cambiar unas pocas p ginas y ver los cambios de manera paulatina Haciendo por lo tanto muy suave la transici n Modo de empleo de JSF Para el caso de utilizaci n e instalaci n de JSF se har uso del proyecto de Apache MyFaces Para ello
3. faces config xml WEB INF admin faces config xml lt param value gt lt description gt Ficheros de definicion lt description gt lt context param gt lt context param gt lt param name gt com sun faces validateXml lt param name gt param value true param value description Set this flag to true if you want the JavaServer Faces Reference Implementation to validate the XML in your faces config xml resources against the DID Default value is false description lt context param gt lt context param gt param name com sun faces verifyObjects param name param value true param value description Set this flag to true if you want the JavaServer Faces Reference Implementation to verify that all of the application objects you have configured components converters Page 24 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF renderers and validators can be successfully created Default value is false lt description gt lt context param gt Una vez que se configura el fichero web xml las p ginas xhtml se desarrollar n atendiendo a a las librer as incorporadas lt html xmlns http www w3 org 1999 xhtml xmlns ui http java sun com js facelets xmlns h http java sun com jsf html xmlns f http java sun com jsf core xmlns v http www viavansi com jsf custom xmlns t http myfaces apache org tomahawk xmlns
4. inputhidden para guardar el objeto lt h form gt pins value f miBean value SIS Forno Tambien se puede utilizar un RequestMap para pasar objetos al siguiente request teniendo en cuenta que ser n limpiados despu s de un request Page 12 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF package es juntadeandalucia cice util import javax faces context FacesContext public class FacesUtil public static Object getRequestMapValue FacesContext context String key return context getExternalContext getRequestMap get key public static void setRequestMapValue FacesContext context String key Object value context getExternalContext getRequestMap put key value Otra manera es utilizar un SessionMap para mantener los valores que deben ser guardados durante la sesi n del usuario package es juntadeandalucia cice util import javax faces context FacesContext public class FacesUtil public static Object getSessionMapValue FacesContext context String key return context getExternalContext getSessionMap get key public static void setSessionMapValue FacesContext context String key Object value 1 context getExternalContext getSessionMap put key value public Page 13 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF static Object removeSessionMapValue FacesContext context String key return
5. java net https jsf extensions dev java net nonav mvn Este proyecto almacena el desarrollo de software para extender las capacidades de la especificaci n JSF El software de este proyecto est pensado para que funcione en cualquier implementaci n que cumple la especificaci n JSF aunque seg n la p gina oficial las capacidades se mejoran cuando se ejecuta con la implementaci n de SUN Este proyecto est dividido en tres pudiendo trabajar de forma conjunta o por separado La separaci n es en funci n del ciclo de vida del desarrollo run time test time y design time Ajax4jsf Fue desarrollado por java net y patrocinado por Exadel A partir del 05 03 2007 Exadel y Red Hat decidieron colaborar en el desarrollo de esta y otras tecnologias La pagina oficial del proyecto se ha movido a http labs jboss com jbossajax4jsf Actualmente el proyecto se encuentra dentro del proyecto RichFaces Ajax4JSF es una extensi n opensource para el est ndar JSF que a ade capacidades AJAX a las aplicaciones JSF sin la necesidad de escribir c digo Javascript RichFaces es una librer a de componentes para JSF construida sobre Ajax4jsf Permite una integraci n f cil de capacidades AJAX en el desarrollo de aplicaciones Page 4 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF de negocio RichFaces mejora el framework Ajax4jsf de dos formas importantes Primero aumenta el n mero de componentes visuales listos para usar En segundo lugar imp
6. las 12 03 MADEJA JavaServer Faces JSF import javax faces event PhaseId import javax faces event PhaseListener public class LifeCycleListener implements PhaseListener public void beforePhase PhaseEvent event System out println Fase Anterior event getPhaseId public void afterPhase PhaseEvent event System out println Fase Posterior event getPhaseld public Phaseld getPhaseld return PhaseId ANY PHASE Se agrega al fichero faces config xml lt lifecycle gt phase listener mypackage LifeCycleListener phase listener lifecycle Obteniendo por resultado la siguiente salida Fase Anterior RESTORE VIEW 1 Fase Posterior RESTORE_VIEW 1 Fase Anterior APPLY REQUEST VALUES 2 Fase Posterior APPLY REQUEST VALUES 2 Fase Anterior PROCESS VALIDATIONS 3 Fase Posterior PROCESS VALIDATIONS 3 Fase Anterior UPDATE MODEL VALUES 4 Fase Posterior UPDATE MODEL VALUES 4 Fase Anterior INVOKE APPLICATION 5 Fase Posterior INVOKE APPLICATION 5 Fase Anterior RENDER RESPONSE 6 Fase Posterior RENDER RESPONSE 6 Mensajes de error En JSF se pueden configurar paquetes de recursos y personalizar los mensajes de error para convertidores y validadores El paquete de recursos se configura dentro de faces config xml lt message bundle gt catalog view bundle Messages lt message bundle gt Las parejas clave valor de los mensajes de error se a aden al fichero
7. lt servlet mapping gt lt servlet name gt Faces Servlet lt servlet name gt url pattern jsf url pattern servlet mapping Welcome files gt welcome file list welcome file index jsp welcome file welcome file list web app En cuanto a las posibles etiquetas jsf disponibles y su funcionalidad puede verse el documento Componentes JSF pdf que se encuentra en el repositorio Enlaces de inter s de JSF Page 10 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF e P gina oficial de Myfaces ADF Faces Components e Framework AME de Endesa Recomendaciones de uso Paso de par metros a los actions Con los tags h commandLink y h commandButton se puede invocar un m todo del backing bean utilizando el atributo action o actionListener pero no se le puede pasar un parametro directamente por lo que el tag f attribute puede resultar til us ndolo junto con el actionListener un ejemplo lt h form gt h commandLink actionListener miBean action gt lt f attribute name nombreAtributol value valorAtributol gt lt f attribute name nombreAtributo2 value valorAtributo2 gt lt h outputText value De click aqui gt lt h commandLink gt lt h commandButton value Click actionListener miBean action gt lt f attribute name nombreAtributol value valorAtributol gt lt f attribute name nombreAtributo2 value valo
8. ser necesario descargar las librer as correspondientes de JSF que se encuentran en http myfaces apache org binary cgi Page 6 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF Una vez descargado se extraen las librer as necesarias incorpor ndolas dentro de las librer as del nuevo proyecto quedando una estructura similar a la que se muestra en la figura 1 e Jakarta Commons BeanUtils Version 1 6 e Jakarta Commons Collections Version 3 0 Jakarta Commons Digester Version 1 5 Jakarta Commons Logging Version 1 0 4 Los siguientes son obligatorios si se tiene pensado usar componentes tomahawk e Jakarta Commons Codec Version 1 2 Jakarta Commons FileUpload Version 1 0 Page 7 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF _ Navigator x e amp veo X Bist gt deployables JavaSource v WebCortent gt META INF Y VWEB INF v stilo commons beanutils 1 6 1 jar E commons codec 1 2 jar commons collections 3 0 jar ll E commons digester 1 5 jar commons el jar Hi iny commons fileupload 1 0 jar Hi commons logging jar an commons validator jar li jakarta oro jar iny jsp 2 0 jar 2 jstl jar lij IHY myfaces jar ii myfaces extensions jar myfaces impl jar il u myfaces jsf api jar myfaces wap jar myfaces xdoclet jar IX web xml X classpath IX project runtime IX wtpmod
9. F no sea tan rapida como pueda ser la de otros entornos como WebWork Wicket Spring etc Distintas implementaciones de JSF Actualmente existen muchas librer as de etiquetas JSF que pueden complementar a la implementaci n de la especificaci n oficial La elecci n no tiene porqu cerrarse sobre una de ellas sino que pueden combinarse seg n interese MyFaces Tomahawk Desarrollado por Apache http myfaces apache org tomahawk Este conjunto de componentes tambi n es compatible con la implementaci n de SUN as como con cualquier implementaci n compatible con JSF 1 1 Pueden verse los distintos componentes de MyFaces Tomahawk en el siguiente enlace http www irian at myfaces Adem s pueden consultarse las principales caracter sticas del proyecto Tomahawk en la siguiente direcci n web e http www marinschek com myfaces tiki tiki index php page Features Page 3 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF MyFaces Sandbox Desarrollado por Apache http myfaces apache org sandbox Sandbox es un subproyecto de MyFaces que sirve como base de pruebas para las nuevas incorporaciones al proyecto de Tomahawk Consiste sobre todo en componentes pero como el proyecto de Tomahawk puede tambi n contener otras utilidades para JSF Los distintos componentes pueden consultarse en el siguiente enlace e http www irian at myfaces sandbox ICEfaces Desarrollado por ICEsoft http www icesoft com p
10. MADEJA JavaServer Faces JSF JavaServer Faces JSF La tecnolog a JavaServer Faces es un framework de interfaz de componentes de usuarios del lado del servidor para las aplicaciones web basadas en la tecnolog a Java Los principales componentes de la tecnolog a JSF son Una API para Representar componentes de Interfaz de Usuario Ul y gestionar su estado gt Manejar eventos validar en el servidor y conversi n de datos gt Definir la navegaci n de p ginas gt Soporte de internacionalizaci n y accesibilidad e Dos librer as de etiquetas JSP personalizadas para expresar componentes en una p gina JSP y enlazar los componentes a objetos del servidor El modelo de programaci n bien definido y las librer as de etiquetas facilitan la construcci n y mantenimiento de las aplicaciones web con Interfaces de Usuario Ul de servidor Con un m nimo esfuerzo se podr a e Poner componentes en una p gina mediante etiquetas de componentes Enlazar eventos generados por componentes con c digo de la aplicaci n en el servidor e Relacionar componentes Ul en una p gina con datos del servidor e Construir una Ul con componentes reutilizables y extensibles e Salvar y restaurar el estado de la Ul m s alla de la vida de las peticiones JSF es una especificaci n desarrollada por la Java Community Process Actualmente existen tres versiones de esta especificaci n e JSF 1 0 11 03 2004 e JSF 1 1 27 05 2004 Especificaci n J
11. Message properties conversion error messages javax faces component UIInput CONVERSION Input data is not in the correct type Page 18 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF validation error messages javax faces component UIInput REQUIRED Required value is missing Recomendaciones de dise o Beans JSF presenta dos nuevos t rminos e managed bean objeto manejado Un managed bean describe c mo se crea y se maneja un bean No tiene nada que ver con las funcionalidades del bean e backing bean objeto de respaldo El backing bean define las propiedades y la l gica de manejo asociadas con los componentes UI utilizados en la pagina Cada propiedad del bean de respaldo esta unida a un ejemplar de un componente o a su valor Un backing bean tambi n define un conjunto de m todos que realizan funciones para el componente como validar los datos del componente manejar los eventos que dispara el componente y realizar el procesamiento asociado con la navegaci n cuando el componente se activa Una t pica aplicaci n JSF acopla un backing bean con cada p gina de la aplicaci n Sin embargo algunas veces en el mundo real de nuestras aplicaciones forzar una relaci n uno a uno entre el backing bean y la p gina no es la soluci n ideal Puede causar problemas como la duplicaci n de c digo En el escenario real varias p ginas podr an necesitar compartir el mismo backing bean tras bambalinas En comparaci n con
12. SP e Los oyentes de eventos validadores y los conversores que est n registrados en los componentes e Los objetos del modelo que encapsulan los datos y las funcionalidades de los componentes espec ficos de la aplicaci n Page 2 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF Ventajas e inconvenientes de JSF Existen numerosas ventajas que hacen que JSF sea una tecnolog a apropiada para el desarrollo de aplicaciones web e Una de las grandes ventajas de la tecnolog a JavaServer Faces es que ofrece una clara separaci n entre el comportamiento y la presentaci n Las aplicaciones Web construidas con tecnolog a JSP consegu an parcialmente esta separaci n Sin embargo una aplicaci n JSP no puede mapear peticiones HTTP al manejo de eventos espec ficos del componentes o manejar elementos Ul como objetos con estado en el servidor La tecnologia JavaServer Faces permite construir aplicaciones Web que implementan una separaci n entre el comportamiento y la presentaci n tradicionalmente ofrecidas por arquitectura Ul del lado del cliente JSF se hace f cil de usar al aislar al desarrollador del API de Servlet e La separaci n de la l gica de la presentaci n tambi n le permite a cada miembro del equipo de desarrollo de una aplicaci n Web enfocarse en su parte del proceso de desarrollo y proporciona un sencillo modelo de programaci n para enlazar todas las piezas e Otro objetivo importante de la tecnologia JavaServer F
13. SR 127 http jcp org en jsr detail id 127 e JSF 1 2 11 05 2006 Especificaci n JSR 252 http jcp org en jsr detail id 252 Hoy en d a se encuentran disponibles varias implementaciones de JSF sin embargo la m s extendida es Apache MyFaces sta es la implementaci n m s usada Actualmente implementa la versi n 1 2 de la especificaci n JSF Por hacer un resumen JSF proporciona Una clara separaci n entre vista y modelo Desarrollo basado en componente no en peticiones Las acciones del usuario se ligan muy f cilmente al c digo en el servidor Creaci n de familias de componentes visuales para acelerar el desarrollo Ofrece m ltiples posibilidades de elecci n entre distintos desarrollos PUBIS Esta ficha presenta el contenido acerca de JSF se muestran a continuaci n enlaces directos a distintos aspectos e Caracter sticas e Ventajas e Inconvenientes e Implementaciones e Requisitos e incompatibilidades e Relaci n con otros sistemas e Modo de empleo e Enlaces de inter s Recomendaciones de uso e Buenas pr cticas e Aplicaciones de ejemplo Page 1 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF Caracter sticas Los principales componentes de la tecnolog a JavaServer Faces son Un API y una implementaci n de referencia para representar componentes Ul y manejar su estado manejo de eventos validaci n del lado del servidor y conversi n de datos definir
14. a 1 lt Atr s 1 2 3 4 Adelante gt La paginaci n debe hacerse desde back end es decir desde las consultas a la base de datos si la cantidad de registros es muy grande y no s lo a nivel front end En el caso de displaytag es recomendable utilizarlo cuando las colecciones de objetos son peque as ya que sube a sesi n toda la colecci n para despu s manipularla Buenas pr cticas Estructura y dise o La estructura de directorios est ndar de una aplicaci n JSF es la siguiente proyect MyApp MM kvare NA YourBeans java web AM YourJSP pages jsp AnyImages gif AN WEB INF gt web xml AN faces config xml Donde en el directorio src se sit an los beans de la aplicaci n en web todas las p ginas jsp 6 html as como las im genes y dem s archivos necesarios para la aplicaci n y en WEB INF los ficheros de configuraci n como el fichero descriptor de despliegue web xml y el de configuraci n JSF faces config xml Codificaci n En cuanto a la importaci n de librer as se debe usar el prefijo f para hacer referencia a etiquetas del n cleo de la implementaci n mientras que el prefijo h para hacer referencia a etiquetas de componentes HTML lt taglib uri http java sun com js html prefix h g gt lt taglib uri http java sun com jsf core prefix fn o gt Page 21 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF Respecto a los validador
15. a4j https ajax4jsf dev java net ajax xmlns c http java sun com jstl core En este caso extra do de la p gina index xhtml del directorio web admin actualizaci n se hace referencia a las librer as de tomahawk y myFaces que ser n utilizadas a trav s de etiquetas JSTL Adem s se utilizan tags propios definidos por el usuario a trav s de la etiqueta v De esta manera la p gina quedar a estructurada como sigue lt ui composition template includes skin template xhtml ui define name title gt Actualizaci 3n Masiva de Modelos lt ui define gt ui define name head gt lt v script js embedded jquery highlightFade forms help lt ui define gt lt ui define name header gt lt h2 gt Actualizaci 3n Masiva de Modelos lt h2 gt lt ui define gt lt ui define name body gt enctype multipart form data gt lt v form id formularioModelos t htmlTag value Page 25 10 03 2009 a las 12 03 search loading tables gt MADEJA JavaServer Faces JSF div styleClass mensajes error rendered not empty requestScope resultadoUpdate gt lt ul gt lt li gt lt span class error gt resultadoUpdate lt span gt lt li gt lt ul gt lt t htmlTag gt lt p gt Este proceso actualizar j el modelo de todos los Posteriormente eliminar el modelo original lt br gt La principal utilidad consiste en fusion
16. aces es mejorar los conceptos familiares Disadvantage de componente Ul y capa Web sin limitar a una tecnolog a de script particular o un lenguaje de marcas Aunque la tecnolog a JavaServer Faces incluye una librer a de etiquetas JSP personalizadas para representar componentes en una p gina JSP los APIs de la tecnologia JavaServer Faces se han creado directamente sobre el API JavaServlet Esto permite hacer algunas cosas usar otra tecnolog a de presentaci n junto a JSP crear componentes propios personalizados directamente desde las clases de componentes y generar salida para diferentes dispositivos cliente As se podr n encapsular otras tecnolog as como Ajax en componentes JSF haciendo su uso m s f cil y productivo al aislar al programador de ellas e JavaServer Faces ofrece una gran cantidad de componentes opensource para las funcionalidades que se necesiten Los componentes Tomahawk de MyFaces y ADFFaces de Oracle son un ejemplo Adem s tambi n existe una gran cantidad de herramientas para el desarrollo IDE en JSF al ser el est ndar de JAVA e La tecnologia JavaServer Faces proporciona una rica arquitectura para manejar el estado de los componentes procesar los datos validar la entrada del usuario y manejar eventos Adem s ofrece una r pida adaptaci n para nuevos desarrolladores No obstante el uso de JavaServer Faces tambi n tiene un conjunto de desventajas e Su naturaleza como est ndar hace que la evoluci n de JS
17. ame header gt h outputText value VIDN Vo f facet h commandLink action myBean editMyData gt lt h outputText value f myDataltem id gt lt h commandLink gt lt h column gt lt h dataTable gt lt h form gt Obtener un registro seleccionado En el c digo anterior se indica que al hacer click en h commandLink se invocar el m todo editMyData de MyBean El elemento MyData que corresponde a ese registro puede ser obtenido con el m todo getRowData de la clase HtmiDataTable Extendiendo la clase MiBean con el siguiente c digo package ejemplo import javax faces component html HtmlDataTable public class MyBean private HtmlDataTable myDataTable private MyData myDataltem new MyData public Page 15 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF String editMyData Obtener el elemento MyData para editarlo myDataItem MyData getMyDataTable getRowData return edit Navega hacia edit public HtmlDataTable getMyDataTable return myDataTable public MyData getMyDataltem 1 return myDataltem public void setMyDataTable HtmlDataTable myDataTable 1 this myDataTable myDataTable public void setMyDataltem MyData myDataltem 1 this myDataItem myDataltem Seleccionar varios registros utilizando checkboxes Se pueden seleccionar varios registros agregando una propiedad de tipo boolean a la cla
18. ar modelos lt p gt lt v inputText label ID Modelo Original se borrar j value adminActualizaModelosController idmodeloOrigen title ID MODELO ORIGEN id idmodeloOrigen size io required true maxlength 10 gt lt v inputText label ID Modelo Destino todos los modelos tendr jn este ID Modelo adminActualizaModelosController idmodeloDestino title ID MODELO DESTINO id idmodeloDestino size io required true maxlength TEOS lt p class botonera gt lt h commandButton styleClass boton value Enviar action Page 26 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF f adminActualizaModelosController actionProcesaModelos gt lt v form gt lt Volver a la p jgina anterior gt lt v volverPanel label S msg volver S msg volverApanelDeControl gt lt v volverPanel gt lt ui define gt lt ui composition gt Page 27 10 03 2009 a las 12 03 lt p gt title
19. context getExternalContext getSessionMap remove key Comunicacion entre ManagedBeans Es posible tener mas de un managed bean en un scope si es absolutamente necesario por dise o entonces se puede utilizar el metodo getSessionMap de FacesContext para comunicar los beans durante una sesion de navegador Un ejemplo de dos managed beans declarados en el fichero faces config xml lt managed bean gt lt managed bean name gt miBean1 lt managed bean name gt lt managed bean class gt ejemplo MiRequestBean lt managed bean class gt lt managed bean scope gt request lt managed bean scope gt lt managed bean gt lt managed bean gt lt managed bean name gt miBean2 lt managed bean name gt lt managed bean class gt ejemplo MiSessionBean lt managed bean class gt lt managed bean scope gt session lt managed bean scope gt lt managed bean gt Tanto miBean1 como miBean2 ser n accesibles desde cualquier p gina JSF no importando que el scope de ambos sea distinto El scope de miBean1 es request por lo que en cada petici n se crear una nueva instancia mientras que el de miBean2 est puesto en session en cuyo caso la misma instancia del bean ser utilizada durante toda la sesi n Con la finalidad de obtener y asignar los valores en el SessionMap podr a ser til crear una superclase con algunos m todos protected que fueran heredados por cada backing bean o s lo poner el mapa en una clase utility como la que se est
20. dditional line separators and whitespace will be written that do not influence the HIML code Default Page 9 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF true lt description gt lt param name gt org apache myfaces PRETTY_HTML lt param name gt param value true param value lt context param gt lt context param gt lt param name gt org apache myfaces DETECT_JAVASCRIPT lt param name gt param value false param value lt context param gt lt context param gt lt description gt If true a javascript function will be rendered that is able to restore the former vertical scroll on every request Convenient feature if you have pages with long lists and you do not want the browser page to always jump to the top if you trigger a link or button action that stays on the same page Default false description param nameszorg apache myfaces AUTO SCROLL param name param value false param value lt context param gt Listener that does all the startup work configuration init gt lt listener gt lt listener class gt org apache myfaces webapp StartupServletContextListener lt listener class gt lt listener gt Faces Servlet gt lt servlet gt lt servlet name gt Faces Servlet lt servlet name gt servlet class javax faces webapp FacesServlet servlet class lt load on startup gt 1 lt load on startup gt lt servlet gt
21. ean String includePage myBean getIncludePage jsp gt lt f view gt lt html gt lt head gt lt head gt lt body gt lt h panelGroup rendered myBean includePage null gt lt jsp include page lt includePage gt gt lt h panelGroup gt lt body gt lt html gt f view Page 22 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF IMPORTANTE no usar f subview en lugar de h panelGroup Todas las p ginas incluidas deber an tener su propio f subview con un nico ID El c digo java del backing bean MyBean java deber a parecerse al siguiente private String includePage public String getIncludePage if Do your thing this is just a basic example includePage includePagel else if 1 includePage includePage2 else KE A includePage includePage3 return includePage Aplicacion de ejemplo Dentro del catalogo interno de la Junta de Andalucia se encuentra el proyecto CRIJA en el cual se hace uso del framework JSF Este proyecto se encarga del mantenimiento del censo de equipos microinformaticos En CRIJA se utilizan p ginas xhtml las cuales ser n referenciadas mediante extensiones jsf para ser controladas por el FacesServlet definido en el web xml Configuracion Faclets gt lt context param gt lt param name gt facelets LIBRARIES lt param name gt param value WEB INF facelet tomaha
22. es empleados es recomendable la creaci n de un cat logo de validadores f cilmente accesible donde se encontrar la relaci n entre validadores objetos de negocio y controles Estos validadores se crear n en el mismo paquete al igual que las clases para las etiquetas JSP El nombre del validador deber identificar como m nimo el control o tipo de control sobre el que act a y la acci n de validaci n que realiza Ser a recomendable que tambi n el validador incluyera comentarios en el c digo tanto para comentar el proceso como para generar documentaci n javadoc Subvistas din micas En cuanto al uso de scriptlets La etiqueta jsp include s lo acepta el uso de scriptlets Se requiere que el managed bean tenga el alcance sesi n de lo contrario surgir n problemas al usar el alcance request Sin embargo los mismos problemas surgen al usar m ltiples subvistas e incluir etiquetas como se describe arriba El c digo XML relevante del fichero faces config es el siguiente lt managed bean gt managed bean name myBean managed bean name managed bean class mypackage MyBean managed bean class lt managed bean scope gt session lt managed bean scope gt lt managed bean gt El c digo relevante del fichero JSP principal es A op mypackage MyBean myBean mypackage MyBean session getAttribute myBean if myBean null First time initialization of bean not done yet myBean new mypackage MyB
23. la aproximaci n ActionForm y Action de Struts el desarrollo con beans de respaldo de JSF sigue unas mejores pr cticas de dise o orientado a objetos Un backing bean no s lo contiene los datos para ver tambi n el comportamiento relacionado con esos datos En Struts Action y ActionForm contienen los datos y la l gica por separado Manejo del scope y los managed beans Se denomina scope a la disponibilidad o contexto de un objeto y a su per odo de vida en una aplicaci n web Se ver en un ejemplo de aplicaci n de encuesta la utilizaci n de un objeto con scope application para guardar los votos un objeto de scope session para asegurar que el usuario solo pueda votar una vez por sesi n se utilizar tambi n un objeto con scope request para mostrar en pantalla la hora en que el usuario emiti su voto es de tipo request porque ese valor ya no se necesitar m s una vez mostrado Tan pronto como un usuario est en una pagina los valores de los componentes son recordados cuando se muestra la p gina por ejemplo el hecho de que el usuario haga click en un bot n que regrese null Sin embargo cuando abandona la p gina el valor del componente desaparece Para tener disponibles valores en otras p ginas o incluso en la misma p gina lo l gico ser a guardar los valores Antes de crear una propiedad para que guarde un valor se debe determinar el scope apropiado para ese valor ya que muchos usuarios podr an acceder a la aplicaci n al mi
24. la navegaci n entre p ginas soportar internacionalizaci n y accesibilidad y proporcionar extensibilidad para todas estas caracter sticas e Una librer a de etiquetas JavaServer Pages JSP personalizadas para dibujar componentes UI dentro de una p gina JSP Este modelo de programaci n bien definido y la librer a de etiquetas para componentes UI facilitan de forma significativa la tarea de la construcci n y mantenimiento de aplicaciones Web con Uls del lado del servidor Con un m nimo esfuerzo podemos e Conectar eventos generados en el cliente a c digo de la aplicaci n en el lado del servidor Mapear componentes Ul a una p gina de datos del lado del servidor e Construir un Ul con componentes reutilizables y extensibles e Grabar y restaurar el estado del Ul mas all de la vida de las peticiones de servidor Como se puede apreciar en la siguiente figura el interface de usuario que creamos con la tecnolog a JavaServer Faces representado por myUl en el gr fico se ejecuta en el servidor y se renderiza en el cliente ACCESSES page HTTP Request renders HTML HTTP Response La p gina JSP myform jsp dibuja los componentes del interface de usuario con etiquetas personalizadas definidas por la tecnolog a JavaServer Faces El Ul de la aplicaci n Web representado por myUI en la imagen maneja los objetos referenciados por la p gina JSP e Los objetos componentes que mapean las etiquetas sobre la p gina J
25. lementa completamente la caracter stica skinnability de incluir un gran n mero de temas skins predefinidos Con esta caracter stica resulta mucho m s f cil gestionar el look and feel de una aplicaci n Pueden visualizarse algunos ejemplos en la siguiente URL http livedemo exadel com richfaces demo welcome jsf RC Faces Rich Client Faces Desarrollado por Vedana http www rcfaces org RC Faces es una librer a JSF que proporciona un conjunto de componentes para construir la siguiente generaci n de aplicaciones web RC Faces usa tecnolog as AJAX y una API de Javascript orientada a objetos para construir p ginas de forma din mica Es compatible con la implementaci n est ndar de JSF Desde la p gina oficial se muestran algunos ejemplos de esta librer a hitp www rcfaces org starter index jsf ADF Faces Todos los componentes de ADF Faces han sido donados por Oracle a la Fundaci n Apache la cual lo acogi bajo el proyecto Trinidad y ahora se hace el lanzamiento de Apache MyFaces Trinidad Core 1 2 1 Proporciona un amplio conjunto de componentes JSF siempre permitiendo las interacciones con AJAX que simplifican radicalmente el desarrollo de aplicaciones web Otras implementaciones estudiadas e Sistemas basados en AJAX Tags e Sistemas basados en AjaxAnywhere e Libreria TagLibs Tobago e Trinidad e Sistemas basados en Rich Faces Tabla Comparativa Por ltimo veamos una tabla comparativa de estas herra
26. mientas Esta tabla suele actualizarse con frecuencia y presenta la comparativa de las ltimas librer as de componentes e http www jsfmatrix net Requisitos e incompatibilidades En relaci n con el uso de JSF se han detectado lo siguientes requisitos agrupados por categor a e Versiones de Java 1 JDK 1 4 x 2 JDK 1 5 x Contenedor de Servlet Tomcat 4 x Tomcat 5 x JRun 4 SP1a JBoss 3 2 x JBoss 4 0 x BEA Weblogic 8 1 O OT E Page 5 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF 7 Jonas 3 3 6 w Tomcat 8 Resin 2 1 x 9 Jetty 4 2 x 10 Jetty 5 1 x 11 Websphere 5 1 2 12 OC4J No obstante cualquier motor de servlet que cumpla la especificaci n 2 3 deber a valer Respecto a JSP con la versi n 1 2 es bastante pero MyFaces usa caracter sticas de la versi n 2 0 por lo tanto en estos contenedores habr que instalar un jar adicional que viene con la distribuci n jsp 2 0 jar IMPORTANTE No a adir ese jar si no es necesario por ejemplo en tomcat 5 5 la presencia de este archivo causar a que el motor de servlet dejara de funcionar Adem s habr a que tener en cuenta las siguientes consideraciones e El motor de servlet debe ser compatible con la especificaci n 2 3 y las JSP deben ser acordes a la especificaci n 1 2 JSF nicamente soporta peticiones realizadas con POST e La especificaci n no obliga a que haya validaciones en el cliente si bien dos desarrollos como MyFaces y
27. rAtributo2 gt lt h commandButton gt lt h form gt lt pre gt Luego estos atributos pueden ser recuperados utilizando el m todo getAttributes del componente que implementa el ActionEvent que manej el actionListener package ejemplo import javax faces event ActionEvent import es juntadeandalucia cice util FacesUtil Page 11 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF public class MyBean public void action ActionEvent event String strAtributol FacesUtil getActionAttribute event nombreAtributol String strAtributo2 FacesUtil getActionAttribute event nombreAtributo2 package es juntadeandalucia cice util import javax faces event ActionEvent public class FacesUtil public static String getActionAttribute ActionEvent event String name return String event getComponent getAttributes get name Por lo que las variables strAtributo1 y strAtributo2 ahora ya tienen los valores asignados de nombreAtributo1 y nombreAtributo2 respectivamente Se debe tener en cuenta que cada nombre de atributo debe ser nico y no sobreescribir atributos por defecto del componente como id name value binding rendered etc Pasar objetos de request en request Si se tiene un bean con scope de request y se quiere reutilizar una propiedad par metro u objeto en la siguiente peticion sin tener que reinicializarlo otra vez y se puede utilizar el tag h
28. roducts icefaces html ICEFaces proporciona un entorno de presentaci n web para aplicaciones JSF que mejora el framework JSF est ndar y el ciclo de vida con caracter sticas interactivas basadas en AJAX Para trabajar con ICEfaces puede elegirse cualquiera de las dos implementaciones est ndar En la siguiente direcci n web pueden encontrarse demos sobre sus componentes hitp www icesoft com products demos icefaces html RichFaces Rich Faces es un framework de c digo abierto que a ade capacidad Ajax dentro de aplicaciones JSF existentes sin recurrir a JavaScript Rich Faces incluye ciclo de vida validaciones conversores y la gesti n de recursos est ticos y din micos Los componentes de Rich Faces est n construidos con soporte Ajax y un alto grado de personalizaci n del look and feel que puede ser f cilmente incorporado dentro de las aplicaciones JSF http labs jboss com jbossrichfaces AJAX blueprints components Desarrollado por java net https blueprints dev java net ajaxcomponents html Consiste en una serie de componentes AJAX basados en la tecnolog a JSF Tienen dos librer as de componentes JSF Una basada en la versi n 1 2 de JSF y que puede ser usada en un servidor de aplicaciones JEE5 El otro conjunto tiene componentes basados en JSF 1 1 y que pueden ejecutarse en servidores de aplicaciones J2EE 1 4 En la p gina oficial presentan demos de algunos componentes JSF Extensions Desarrollado por
29. se wrapper en este caso MyDate y en la columna desplegarlo como h selectBooleanCheckbox package ejemplo public class MyData private boolean selected public boolean isSelected return selected public void setSelected boolean selected Page 16 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF this selected selected Y en la pagina JSF lt h form gt lt h dataTable value myBean myDataList var myDataItem binding myBean myDataTable gt lt h column gt lt f facet name header gt h outputText value Select f facet h selectBooleanCheckbox value f myDataltem selected gt lt h column gt lt h dataTable gt lt h commandButton action myBean getSelectedItems value Elementos seleccionados gt lt h form gt Ciclo de vida del listener Puede ser til para realizar un debug y cuando se est n dando los primeros pasos con JSF el poner un breakpoint de las diferentes etapas del ciclo de vida de una p gina JSF as se puede conocer la cadena de acciones que hace tras bambalinas Las 6 fases de la vida JSF son Restaurar vista Asignar valores de petici n Realizar validaciones Actualizar los valores del modelo Invocar la aplicaci n Presentar las respuestas DE Este ser a un ejemplo de un LifeCycleListener package ejemplo import javax faces event PhaseEvent Page 17 10 03 2009 a
30. smo tiempo as que se necesitar a utilizar el scope m s corto posible para hacer un mejor uso de los recursos del servidor La siguiente figura muestra la duraci n de cada tipo de scope Page 19 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF Application TEA Page MT TI Por ejemplo una aplicaci n que tenga una lista desplegable con tipos de medidas p xeles cent metros y pulgadas se tendr a que guardar en un ApplicationBean1 as todos los usuarios en sesiones concurrentes podr an compartir la lista Por otro lado el nombre del usuario logado se guardar a en un SessionBean1 para que el nombre est disponible en todas las p ginas que el usuario acceda durante su sesi n En caso de no necesitar alguna informaci n mas alla de la petici n actual entonces se utilizar a el RequestBean1 Page 20 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF Validadores Los validadores est ndar que vienen con JSF son b sicos y podr an no cumplir con los requerimientos de la aplicaci n pero desarrollar validadores JSF propios es sencillo aunque lo m s recomendable es utilizar los built in y s lo en casos de extremo detalle o complejidad de la validaci n crear uno pero extendiendo de la clase base de JSF Paginaci n Cuando la informaci n a presentar en una p gina es demasiada se debe optar por partirla en varios apartados o p ginas Permitiendo desplazarse al usuario entre todas ellas el t pico P gin
31. ules JI lij IEN figura 1 Page 8 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF Tambi n ser necesario modificar el fichero web xml para que el servlet de JSF recoja todas las peticiones que acaben en jsf lt xml version Lo web app id WebApp ID version mo 4m xmlns http java sun com xml ns j2ee xmlns xsi http www w3 org 2001 XMLSchema instance xsi schemaLocation http java sun com xml ns j2ee http java sun com xml ns j2ee web app 2 4 xsd context param description State saving method client or server default See JSF Specification 2 5 2 description param name javax faces STATE SAVING METHOD param name param value client param value lt context param gt lt context param gt lt description gt This parameter tells MyFaces if javascript code should be allowed in the rendered HTML output If javascript is allowed command_link anchors will have javascript code that submits the corresponding form javascript is not allowed the state saving info and nested parameters will be added as url parameters Default true lt description gt lt param name gt org apache myfaces ALLOW_JAVASCRIPT lt param name gt lt param value gt true lt param value gt lt context param gt lt context param gt lt description gt If true rendered HTML code will be formatted so that it is human readable i e a
32. wk taglib xml WEB INF facelet viavansi custom taglib xml param value context param context param lt param name gt facelets DEVELOPMENT lt param name gt lt param value gt true lt param value gt lt context param gt Solo durante el desarrollo en produccion quitar gt lt context param gt lt param name gt facelets REFRESH_PERIOD lt param name gt param value 1 param value context param Los comentarios xhtml son ignorados gt lt context param gt Page 23 10 03 2009 a las 12 03 MADEJA JavaServer Faces JSF lt param name gt facelets SKIP_COMMENTS lt param name gt param value true param value context param Configuracion JSF gt lt context param gt param name javax faces STATE SAVING METHOD param name param value server param value lt context param gt lt context param gt param name javax faces DEFAULT SUFFIX param name param value xhtml param value context param lt lt context param gt lt param name gt org apache myfaces PRETTY_HTML lt param name gt lt param value gt true lt param value gt lt context param gt gt lt context param gt lt param name gt org apache myfaces ALLOW_JAVASCRIPT lt param name gt lt param value gt false lt param value gt lt context param gt lt context param gt param name javax faces CONFIG FILES param name param value WEB INF

Download Pdf Manuals

image

Related Search

Related Contents

JHD-1000 - Automatisation JRT    IT EN FR DE ES PT RU I32N  Compte-rendu du débat public CPDP  SL-13BPS  Leica DISTOTM E7100i Leica DISTOTM E7100i  日本語 - optrel AG  ダウンロード  user manual  Operating Instructions  

Copyright © All rights reserved.
Failed to retrieve file