Libreria de funciones JSTL
La libreria functions de JSTL (TAGLIB) nos facilita trabajar con Strings y Arrays en el lenguaje EL de JSP. Consta de las siguientes funciones:
fn:contains()
fn:containsIgnoreCase()
fn:endsWith()
fn:escapeXml()
fn:indexOf()
fn:join()
fn:length()
fn:replace()
fn:split()
fn:startsWith()
fn:substring()
fn:substringAfter()
fn:substringBefore()
fn:toLowerCase()
fn:toUpperCase()
fn:trim()
Para poder utilizarla es necesario incluir la siguiente cabecera:
< %@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Plugin para el eclipse que genera aplicación automaticamente
En GitHub he creado un repositorio donde comparto un plugin para el eclipse que he implementado y que facilita el desarrollo aplicaciones J2EE https://github.com/roberto-pf/Sotilizator. El plugin consigue implementar toda la lógica de negocio de una aplicación que utiliza: Struts + Spring + hibernate + JQuery.
Qué es el Sotilizator?
Se trata de un plugin para el eclipse (probado en su versión Helios). La finalidad de este plugin es la creación de una aplicación web de forma automática y con unas determinadas características a partir de un esquema de una Base de Datos.
Estas características son:
1 – La aplicación resultante estará realizada empleando un MVC en J2EE con Struts 1.3, inyección de dependencias con Spring 3.0, hibernate 3.2.6 para el acceso a datos para la parte de la lógica de negocio. Mientras que para la parte de la vista se empleará jquery junto a las tag-libraries de struts. Además, de DWR para interactuar con el servidor desde el cliente.
2 – Se generará un fichero pom.xml para que a través de MAVEN se puedan obtener las dependencias.
3 – Se generará un fichero build.xml donde estarán las tareas Ant necesarias para el despliegue de la aplicación en Tomcat, JBoss y OAS.
4 – La aplicación resultante será capaz de construir las tareas CRUD de las tablas automáticamente. A partir del esquema de la BD obtendrá los campos y su tipo.
5 – Las capas que contendrá la aplicación son las siguientes:
VO: Objetos que hace referencias a las tablas. DAO: Capa que realiza el acceso a la BD. Manager: Capa sobre la que se aplican las transacciones. Delegate: Capa que se encarga de relacionar la parte de la vista con la lógica de negocio. Action: Aquí deberán ir las diferentes acciones que luego el controlador mapea para interactuar con la vista.
Nota: Para más información consultar manuales del usuario y del programador: https://github.com/roberto-pf/Sotilizator/tree/master/Readme
Propiedades nth-child y first-child de jquery.
JQuery tiene varias propiedades que se pueden utilizar para acceder a nodos concretos que están dentro de un nodo padre. Entre estas propiedades voy a comentar el funcionamiento de: first-child y nth-child
Para ello voy a utilizar un ejemplo. Supongamos que tenemos un Select cuyo id es «selectPrueba».
first-child – Se puede utilizar para seleccionar el primer elemento.
p.e. esto seleccionaria en el combo el primer elemento.
$('select#selectPrueba option:first-child').attr("selected", "selected");
nth-child – Permite seleccionar un elemento concreto.
p.e. esto seleccionaria en el combo el elemento 4.
$('select#selectPrueba option:nth-child(4)').attr('selected', 'selected');
Más información con ejemplos: first-child y nth-child.
Lenguaje de expresiones (EL) – Objetos implícitos
Se representan en las JSP mediante anotaciones del tipo: ${ … }.
De esta forma se indica que la información ingresada dentro de las llaves, no es leída literalmente, sino que se tiene que evaluar, y usar el resultado de esta evaluación.
Hay objetos que son automáticamente accesibles a cualquier etiqueta JSP. A través de ellos es posible acceder a cualquier variable de los ámbitos page, request, session, application, a parametros HTTP, cookies, valores de cabeceras, contexto de la página, y parámetros de inicialización del contexto.
– pageScope: Variables de ámbito página.
– requestScope: Variables de ámbito request.
– sessionScope: Variables de ámbito session.
– applicationScope: Variables de ámbito application.
– param: Parametros del request como cadenas.
– paramValues: Parametros del request como array de cadenas.
– header: Cabeceras del request HTTP como cadenas.
– headerValues: Cabeceras del request HTTP como array de cadenas.
– cookie: Valores de las cookies recibidas en el request.
– initParam: Parametros de inicialización de la aplicación Web.
– pageContext: El objeto PageContext de la página actual.
p.e.
${pageContext.request.requestURL} URL usada para acceder a la página.
En esta página se puede encontrar bastante más información de las propiedades de estos objetos implícitos.
Test does not support runtime expressions
Programando unas jsp me he encontrado con una serie de ‘warnnings’. Aunque al ejecutarlas bajo un tomcat funcionaban correctamente, en un OAS daban problemas. Los ‘warnnings’ en cuestión eran tal que así:
- test does not support runtime expressions
- value does not support runtime expressions
- items does not support runtime expressions
Esto sucedía porque estaba importando la taglib de JSTL 1.0 en lugar de su versión 1.1.
Utilizaba:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
En lugar de:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Como se puede ver, las dos URI’s se parecen mucho y es bastante fácil equivocarse.
Categorias
- adobe (2)
- agile (1)
- Alfresco (1)
- Android (26)
- Angular (6)
- angularjs (10)
- apache (1)
- axis (2)
- Bases de datos (14)
- Bootstrap (1)
- C# (3)
- Cámara (1)
- chrome (3)
- Codeigniter (2)
- Control de Versiones (2)
- CSS (25)
- CVS (1)
- Django (9)
- Django Rest Framework (1)
- DNS (1)
- Docker (2)
- dominio (1)
- eclipse (5)
- Entity Framework (2)
- ETL (1)
- Firefox (6)
- flash (1)
- freecad (1)
- Git (12)
- GitHub (4)
- gpg (2)
- Groovy (1)
- Handlebars (1)
- hibernate (4)
- hosting (1)
- HTML (50)
- HTML 5 (26)
- Impresión 3D (9)
- Inkscape (1)
- IOS (2)
- ireports (3)
- Java (43)
- Javascript (55)
- JBoss (3)
- JPA (2)
- JQuery (20)
- Json (7)
- JSP (5)
- Lamp (1)
- LDAP (1)
- lean (1)
- linkedin (1)
- LINQ (1)
- linux (13)
- Livecycle (1)
- log (1)
- microcontroladores (1)
- MongoDB (4)
- MySQL (8)
- Node.js (5)
- OC4J (1)
- Openshift (2)
- Oracle (5)
- Patrones de Diseño (1)
- Photoshop (2)
- php (20)
- PostgreSQL (1)
- python (19)
- rabbitmq (1)
- Raspberry PI (13)
- Raspherry PI (5)
- React (6)
- seguridad (3)
- Selenium (3)
- Sencha Touch (1)
- Sin categoría (28)
- Spring (16)
- spring-boot (3)
- SQL (7)
- SQLServer (1)
- struts (2)
- SVN (1)
- Talend (1)
- Tomcat (5)
- unity (3)
- Visual Studio Code (2)
- vmware (5)
- Web Services (11)
- windows (18)
- wordpress (10)
- Xiaomi (1)
- xml (2)
Trabajos Realizados
- App Android – Autoka Fr
- App Android – Cartelera Cántabra
- App Android – Gramática y Vocabulario Ingles
- App Android – Hoja de Gastos
- App Android – Hotel Torre Cristina
- App Android – OcioEnjoy
- App Android – Visor CardBoard
- App Firefox – Managapp
- DiamanteBomba – DisasterCode
- Generador de Partes de Trabajo
- GitHub – Android Web Generator
- GitHub – Dynamic Angular Gallery
- GitHub – Dynamic React Gallery
- GitHub – Sotilizator
- GitHub – SpringAngularJS
- GitHub – Swiper Dynamic Angular Gallery
- HazParejas – DisasterCode
- RompeCabezas – DisasterCode
- Unity Game – English Couple
- Unity Game – Kill Wasp
- WordPress – El Buen Apicultor
- WordPress – El Cajón de los Retales
- WordPress – El Vestidito Azul
- WordPress – Feuchas
- WordPress – Fragua de Navajas Ponce
- WordPress – Humor a las Tres
- WordPress – Photo Places