Skip to main content

Posts

Showing posts with the label java server faces

Controlar F5 o Refresh Button del Navegador con Jakarta Server Faces

Hay varias formas de Controlar cuando el usuario esta en una pagina Web desarrollada con Jakarta Server Faces. Presiona el boton Refresh o la tecla F5 para recargar o actualizar la pagina actual. Creamos un proyecto Jakarta EE   y se ha configurado la pagina de inicio en el archivo web.xml Al ejecutar la aplicación se muestra la pagina de login.xhtml donde se pedirĆ” las credenciales del usuario. al ingresar las credenciales nos dirige a la pagina index.xhtml Si presionamos la tecla F5 o el botón Refresh del navegador  podrĆ” notar que sera redirigido a la pagina de login.xhtml, en lugar de actualizar  la pagina index.xhtml. Para evitar esta situación y mantener al usuario observando la pagina actual se pueden implementar de varias formas:  Controlar los eventos con JavaScript, Guardar datos en el cliente. Personalizar mediante <f:viewAction> En nuestro caso mostraremos como utilizar algo diferente mediante  <f:viewAction/>, es un ejemplo demostr...

Jakarta Server Faces

 Jakarta Server Faces es una excelente especificación que nos ofrece una forma fĆ”cil de crear aplicaciones Web, con grandess bibliotecas que puedes utilizar como lo son: Omnifaces: Liberia de utilidades Primefaces: La mejor librerĆ­a de componentes visuales para JSF. Otra de las ventajas es que nosotros podemos crear nuestras propias bibliotecas de componentes y personalizar las aplicaciones a nuestra comodidad. En mi caso he ido personalizando una biblioteca llamada jmoordbjsf , la cual esta optimizada para ser usada con jmoordb (APi para MongoDB), con jmoordbutils (Libreria de utilidades). Aqui mostramos un enlace a las diferentes bibliotecas https://avbravo.github.io/ Pronto estaremos descrbiendo paso a paso la creación de una aplicación con Microprofile con MongoDB y Jakarta Server Faces (Primefaces + jmoordbjsf)

Creando un paginator para JavaServer Faces

 Una de las ventajas de Java Server Faces es la gran cantidad de componentes y proyectos como Primefaces hacen el desarrollo muy fĆ”cil. En esta ocasión mostraremos como crear un pequeƱo componente usando composite de Java Server Faces para crear un paginator que incluiremos en componentes como <p:dataTable>, <p:dataGrid> de una manera muy sencilla. El procedimiento de creación es muy sencillo  Tenemos una interface IPaginatorX.java con los mĆ©todos  public default String last(PaginatorX paginatorX)  public default String first(PaginatorX paginatorX)  public default String next(PaginatorX paginatorX)  public default String back(PaginatorX paginatorX)  public default String skip(PaginatorX paginatorX) default   public PaginatorX loadPaginator(PaginatorX paginatorX){         return  paginatorX;     } Creamos una clase PaginatorX.java En el Controller definimos una clase que implementa IPaginatorX,...

jmoordbutils para descargar y visualizar archivos en cualquier directorio mediante Java Server Faces

jmoordbutils para descargar y visualizar archivos en cualquier directorio mediante Java Server Faces  Generalmente necesitamos ver imĆ”genes desde un  directorio fuera del directorio /resource de nuestro proyecto Web con Java Server Faces.TambiĆ©n queremos ver y descargar archivos PDF.  El procedimiento serĆ­a  crear un StreamedContent para su manejo. Dentro de la libreria jmnoordbutils desarrolle  la claseJMoordbMediaManager.java que simplifica el trabajo. Es importante considerar los @Scoped. Lo recomendable es que la clase que administre el StreamContent sea @RequestScoped. (Ya esta implementado en la biblioteca jmoordbutils). De esta manera solo necesitas  indicar en el componente <p:graphicImage la ruta completa del archivo de imagen que deseas mostrar. Solo necesitamos inyectar en el controller  @Inject  JMoordbMediaManager  jMoordbMediaManager;     y crear el metodo  public String saveToMediaContex(String pathOfF...

Invocar mƩtodos directos desde un composite Java Server Faces

Invocar mĆ©todos directos desde un composite Java Server Faces A veces necesitamos pasar solo el nombre del controller o el entity a un composite y desde el invocar a mĆ©todos especĆ­ficos que no serĆ”n pasados como parĆ”metros. Definimos los atributos Controller Si el mĆ©todo necesita leer atributos lo podemos pasar mediante < f:attribute> en esos mĆ©todos los obtenemos < composite : attribute name = "controller" type = "java.lang.Object" /> < composite : attribute name = "next" default = "next" /> definición del action Auto ------- JavaScript Python C++ C PHP Golang Java Rust Bash CSS Markdown Asciidoc Ruby ------- Other exit:   Ctrl + ↩ action = "#{cc.attrs.controller[cc.attrs.next]}" DEFINIMOS EL COMPONENTE < ?xml version='1.0' encoding='UTF-8' ?> <! DOCTYPE html PUBLIC  "-//W3C//DTD XHTML 1.0 Transitional//EN"...