JSP. 13 Librería formatting


Contiene etiquetas que realizan diversas funciones relacionadas con formato y localización. Para importar este conjunto de etiquetas:
<%@taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>

Etiqueta formatDate

Permite formatear fechas. Tiene, entre otros, los siguientes atributos:
Atributo
Descripción
Requerida
Por defecto
type
Permite los valores time (sólo hora), date (sólo fecha) y both (ambos). El valor por defecto es date.
No
date
pattern
Permite controlar el formato, podemos ver como estructurarlo en la clase java.text.SimpleDateFormat del API de Java.
No

value
La fecha en sí o la variable que la contiene.
No

dateStyle
full, long, medium, short, default
No
default
timeStyle
full, long, medium, short, default
No
default
timeZone
Zona horaria.
No
Default time zone
var
Nombre de la variable donde guardar la fecha formateada.
No
Imprimir en la página
scope
Ámbito de la variable.
No
page

Ejemplo:
Hoy es: 
<fmt:formatDate value="${pageScope.fecha}" pattern="dd/MM/yyyy"/>
<br />
Son las: 
<fmt:formatDate value="${pageScope.fecha}" pattern="HH:mm:ss"/>
<br />
Es el 
<fmt:formatDate value="${pageScope.fecha}" pattern="DD"/>º día del año.
<br /><br />

formatDate (1):
<fmt:formatDate type="time" value="${pageScope.fecha}" />
<br />

formatDate (2):
<fmt:formatDate type="date" value="${pageScope.fecha}" /> 
<br />

formatDate (3):
<fmt:formatDate type="both" value="${pageScope.fecha}" /> 
<br />

formatDate (4):
<fmt:formatDate type="both" dateStyle="short" timeStyle="short" value="${pageScope.fecha}" />
<br />

formatDate (5):
<fmt:formatDate type="both" dateStyle="medium" timeStyle="medium" value="${pageScope.fecha}" /> 
<br />

formatDate (6):
<fmt:formatDate type="both" dateStyle="long" timeStyle="long"
value="${pageScope.fecha}" />
<br />

El resultado sería:
Hoy es: 31/05/2013
Son las: 18:32:38
Es el 151º día del año

formatDate (1): 18:32:38
formatDate (2): 31-may-2013
formatDate (3): 31-may-2013 18:32:38
formatDate (4): 31/05/13 18:32
formatDate (5): 31-may-2013 18:32:38
formatDate (6): 31 de mayo de 2013 18:32:38 CEST

Etiqueta parseDate

Permite convertir una cadena en una fecha, hora o fecha y hora. Sus atributos son:
Atributo
Descripción
Requerido
Por defecto
value
Valor de la fecha a convertir.
No

type
date, time, both.
No
date
dateStyle
full, long, medium, short, default.
No
default
timeStyle
full, long, medium, short, default.
No
default
parseLocale
Locale a usar cuando se realice la conversión.
No
default locale
pattern
Formato de la fecha.
No
ninguno
timeZone
Zona horaria.
No
default time zone
var
Nombre de la variable donde se guardará la fecha.
No
Print to page
scope
Ámbito de la variable
No
page

Ejemplo:
<c:set var="fecha2" value="01/01/2013" />
<fmt:parseDate value="${fecha2}" var="fechaParse" pattern="dd/MM/yyyy" />
<br />
fecha2:
<c:out value="${fechaParse}" />
<br />
fecha2 long:
<fmt:formatDate value="${fechaParse}" dateStyle="long" />
<br />
fecha2 short:
<fmt:formatDate value="${fechaParse}" dateStyle="short" />
<br />
fecha2 dd/MM/yyyy:
<fmt:formatDate value="${fechaParse}" pattern="dd/MM/yyyy" />


Resultado:
fecha2: Tue Jan 01 00:00:00 CET 2013
fecha2 long: 1 de enero de 2013
fecha2 short: 1/01/13
fecha2 dd/MM/yyyy: 01/01/2013

Etiqueta formatNumber

Permite dar formato a valores numéricos. Sus atributos son:
Atributo
Descripción
Requerido
Por defecto
value
Valor numérico a formatear.
No

type
number, currency, percent
No
number
pattern
Permite controlar el formato, podemos ver como estructurarlo en la clase java.text.DecimalFormat del API de Java.
No
ninguno

Ejemplo:
<c:set var="numero">123</c:set>
<br /><fmt:formatNumber value="${numero}" pattern="#"/>
<br /><fmt:formatNumber value="${numero}" pattern="00000000"/>
<br /><fmt:formatNumber value="${numero}" pattern="#.00"/>
<br /><fmt:formatNumber value="${numero/5}" pattern="0000000.000"/>

El resultado es:
123
00000123
123,00
0000024,600

Etiqueta parseNumber

Permite convertir a número, porcentaje o moneda. Sus atributos son:
Atributo
Descripción
Requerido
Por defecto
value
Valor numérico a formatear.
No

type
number, currency, percent.
No
number
integerOnly
true: número entero, false: número decimal.
No
false
pattern
Permite controlar el formato, podemos ver como estructurarlo en la clase java.text.DecimalFormat del API de Java.
No

timeZone
Zona horaria.
No
Default time zone
var
Nombre de la variable, donde se guardará el número convertido.
No
Mostrarlo en la página
scope
Ámbito de la variable donde se guardará.
No
page

Ejemplo:
<c:set var="num" value="99.99" />
num =
<fmt:formatNumber type="number" value="${num}" />
<br />
<fmt:parseNumber type="number" var="num1" value="${num}" integerOnly="true" pattern="#.##" />
num1 =
<fmt:formatNumber type="number" value="${num1}" />
<br />
<fmt:parseNumber type="number" var="num2" value="${num}" integerOnly="true" />
num2 =
<fmt:formatNumber type="number" value="${num2}" />

El resultado es
num = 99,99
num1 = 99
num2 = 9.999

Etiqueta bundle

Carga un archivo de recursos, para que sea utilizado por las etiquetas message. Sus atributos son:
Atributo
Descripción
Requerido
Por defecto
basename
Especifica el nombre base del recurso a cargar.
Si
Ninguno
prefix
Valor a anteponer en cada clave de las etiquetas
No
Ninguno

Etiqueta message

Muestra un mensaje internacionalizado: Sus atributos son:
Atributo
Descripción
Requerido
Por defecto
key
Clave a buscar en el archivo de recursos.
No

bundle
Archivo de recursos a usar.
No
Recurso por defecto
var
Nombre de la variable donde se guardará el mensaje.
No
Imprimir en la página
scope
Ámbito de la variable.
No
page

Ejemplo:
Desplegamos la carpeta Other Sources, botón derecho sobre src/main/resources → New → Java.
  1. Categories: Java, File Types: Java Package. Click Next.
  2. Package Name: com.me.jsp.bundle. Click Finish.
Creamos un archivo properties:
  1. Botón derecho sobre el paquete creado. New → Other.
  2. Categories: Other, File Types: Properties File. Click Next.
  3. File Name: num. Click Finish.

Abrimos el archivo num.properties y añadimos:
color.red=rojo
color.green=verde
color.blue=azul

En la página JSP:
<fmt:bundle basename="com.me.jsp.bundle.num" prefix="color.">
  
<fmt:message key="red"/>
<br />
  
<fmt:message key="green"/>
<br />
  
<fmt:message key="blue"/>
<br />
</fmt:bundle>

Resultado:
rojo
verde
azul

Etiqueta timeZone

Especifica la zona horaria para cualquier etiqueta de conversión o formateo que se encuentre en su cuerpo de timeZone. Sus atributos son:
Atributo
Descripción
Requerido
Por defecto
value
Zona horaria a aplicar.
Si
Ninguno

Ejemplo:
<%
  pageContext.setAttribute(
"fecha", new java.util.Date());
%>
<table border="1">
  
<c:forEach var="tz" items="<%=java.util.TimeZone.getAvailableIDs()%>">
     
<tr>
      
<td>
        
<c:out value="${tz}" />
      
</td>
      
<td>
        
<fmt:timeZone value="${tz}">
          
<fmt:formatDate value="${pageScope.fecha}"
               timeZone="${tz}" type="both" />
        
</fmt:timeZone>
      
</td>
    
</tr>
  
</c:forEach>
</table>

Resultado:
Etc/GMT+12
02-jun-2013 20:05:25
Etc/GMT+11
02-jun-2013 21:05:25
Pacific/Midway
02-jun-2013 21:05:25
...
...
AST
03-jun-2013 0:05:25
America/Anchorage
03-jun-2013 0:05:25
America/Juneau
03-jun-2013 0:05:25
America/Nome
03-jun-2013 0:05:25
...
...

Etiquetas setLocale, setBundle, setTimeZone

setLocale establece un determinado locale en la variable de configuración locale. Sus atributos son:
Atributo
Descripción
Requerido
Por defecto
value
Código que representa el lenguaje y el país. Ejemplo, España: es_ES.
Si
en_US
variant
Vendedor o variante específica del navegador.
No
Ninguno
scope
Ámbito de la variable.
No
page

setBundle carga un archivo de recurso y lo guarda en la variable de configuración de recurso o en la variable especificada.
Atributo
Descripción
Requerido
Por defecto
basename
Nombre del recurso a cargar.
Si

var
Nombre de la variable donde guardar el recurso.
No
default
scope
Ámbito de la variable.
No
page

setTimeZone guarda una determinada zona horaria en la variable de configuración zona horaria o una indicada. Sus atributos son:
Atributo
Descripción
Requerido
Por defecto
value
Zona horaria a guardar.
Si

var
Nombre de la variable donde guardar la zona horaria.
No
default
scope
Ámbito de la variable.
No
page


Comentarios

Entradas populares de este blog

Java. Texto de colores en la consola

javax.swing.JPasswordField

javax.swing.JList