SlideShare una empresa de Scribd logo
Páginas dinámicas con tags JSP


             mayo de 2005
¿Qué son?
       JSP incorpora tags <jsp:xxx …>
         Generalmente manejo de propiedades de beans,
          incluir otros JSPs …
         Funcionalidad limitada
       Extensiones:
         Definición de nuevos Tags <mi-tag:mi-funcion>
         Llamada a función Java a través de sintáxis XML
         Hacen uso de Java Tag Extension API
¿Para qué sirven?
       JSPs resolvían problema de servlets
          Más elegancia al escribir HTML
       Ventajas de JSPs
          Más fáciles de mantener por no programadores
       HTML estático  Limitación presentación. Necesaria cierta lógica en
        presentación. Solución JSP:
          Scriptlets (<% %>)
              Rápidos
              Menos familiar para diseñador
              Páginas pierden estilo y claridad
          Extensiones
              Más costosas de programar en un principio
              Más sencillas de utilizar
              Mejor mantenimiento
              Separación más clara Lógica – Presentación
              Utilización más sencilla por diseñador (son tags XML)  Mejor integración con
               HTML
¿Qué aporta Struts?
       Struts ha escrito sus propias extensiones para
        tareas comunes
            Manejo de beans
            Internacionalización
            Lógica (iteracción, chequeo de propiedades, etc.)
            Simplificación controles HTML <html:xxx>
       Alternativas
         Especificación JSTL (Java Standard Tag Library)
            Definición oficial Sun
            Estándar oficial. Requiere JSP 2.0 (p.e. Tomcat 5).
            Primera implementación Jakarta Apache Taglibs  Puede
             usarse con Struts
            Funcionalidad complementaria o alternativa a tags Struts
¿Cómo se escribe una Tag
                              Extension?
       Definición formato de tag
              Fichero tld con sintaxis XML.
                    Debe verificar DTD de acuerdo a versión JSP utilizada
           <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

       Codificación lógica de tag:
          public class BaseTag extends TagSupport {
          // ...
          public int doStartTag() throws JspException {
                              HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
                              StringBuffer buf = new StringBuffer("<base href="");
                              buf.append(request.getScheme());
                              buf.append("://");
                              buf.append(request.getServerName());
                              buf.append(request.getRequestURI());
                              buf.append(""");
                              if (target != null) {
                                                    buf.append(" target="");
                                                    buf.append(target);
                                                    buf.append(""");
                              }
                              buf.append(">");
                              JspWriter out = pageContext.getOut();
                              try {
                                                    out.write(buf.toString());
                              }
                              catch (IOException e) {
                                                    pageContext.setAttribute(Action.EXCEPTION_KEY, e,
                                                    PageContext.REQUEST_SCOPE);
                                                    throw new JspException(messages.getMessage("common.io", e.toString()));
                              }
                              return EVAL_BODY_INCLUDE;
          }
          }
¿Cómo se utilizan Tag
                 Extensions?
   Instalar ficheros TLD y JAR
        WEB-INFlibstruts.jar
        WEB-INFstruts-bean.tld
        WEB-INFstruts-html.tld
        WEB-INFstruts-logic.tld

   Configurar web.xml
        <web-app>
            <!-- ... Otros elementos ... -->
            <taglib>
            <taglib-uri>/tags/struts-bean</taglib-uri>
            <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
            </taglib>
        </web-app>
¿Cómo se utilizan Tag
                Extensions? (II)
   Referenciar definiciones taglib en JSP
         <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
         <%@ taglib uri="/tags/struts-html" prefix="html" %>
        Atributo URI especificado en web.xml
   Utiliza los tags dentro del JSP
     <bean:write name="userForm" property="firstName"/>
Tipos taglibs de Struts
       Librerías incluidas
         Bean
             Acceso a propiedades de JavaBeans
         Html
             Relaciona campos formularios HTML con framework Struts
         Logic
             Generación condicional de salida (HTML) en base a
              recorrido de colecciones, control de flujo, etc
         Nested
             Proporcionan capacidades de anidamiento a otras tags
         Tiles
             Permiten crear páginas en base a piezas (tiles). (Vistas
              más adelante)
Características comunes
       Ámbito automático
         Los objetos se almacenan en uno de estos ámbitos (menor a
          mayor persistencia): page, request, session o application
         Todos los tags buscan el objeto referido en todos los ámbitos:
          Se quedan con primera estancia
         Puede fijarse el ámbito de búsqueda: argumento scope
       Nombres de propiedades comunes
         Propiedades típicas de cada tag:
             Id: nombre de variable creada por un tag
             Name: nombre simbólico del bean (nombre del atributo)
             Property: propiedad del bean
             Scope: ámbito donde buscar el bean
Características comunes (II)
       Sintaxis extendida
         Referencia anidada
            property=“a.b.c”  getA().getB().getC() /
               getA().getB()setC(valor)
         Referencia indexada (desde 1.1)
            property=“a[2]”  getA(2) / setA(2, valor)
       Scriptlets dentro de tags
         Uso como último recurso, pero posible
            <html:link href=‘<%= "/" + name + "/index.jsp" %>’>

       Gestión de errores común
         Atributo “org.apache.struts.action.EXCEPTION” del
          request  Nombre de JSP de tratamiento
Taglib <bean>
   Lista de tags
    Nombre Tag   Descripción
    cookie       Define variable scripting basado en el valor de una cookie

    define       Define variable scripting basado en el valor de una propiedad de bean

    header       Define variable scripting basado en el valor de una cabecera del request

    include      Carga el objeto response y lo hace disponible como bean

    message      Muestra mensaje internacionalizado desde etiqueta

    page         Hace disponible un objeto del contexto page como bean

    parameter    Hace disponible un parámetro del contexto request como variable

    resource     Carga recurso web y lo hace disponible como bean

    size         Define un bean que contiene el número de elementos de una colección

    struts       Expone la configuración de struts como un objeto

    write        Imprime valor de una propiedad de un bean
Taglib <bean> (II)
       Tags más importantes:
         Tag <bean:write>
            Acceso de lectura a propiedades de beans
             <bean:write name="shoppingCart" property="itemSum"/>
         Tag <bean:message>
            Imprime mensaje internacionalizado
            Se fija en el locale solicitado por el cliente en el request
            Extrae literal de fichero properties especificado en struts-
             config.xml.(Puede haber varios  bundle)
             <bean:message key=“inquiry” />
              es_ES  ¿Cómo está usted?
              de_DE  Wie geht es Ihnen?
Taglib <html> (I)
       Diseñados para rellenar formularios con datos
        dinámicos
          <input type="text" name="firstName“            value="<
          %=formBean.getFirstName()%>"/>
          equivale
           <html:text property="firstName"/>

         El bean no necesita ser referenciado. Por defecto el mismo
          para toda el formulario
         Hay tantos tags como controles HTML. P.e.:
          <html:file>  <input type=“file”/>
          <html:img>  <img>
          <html:radio>  <input type=“radio”>
Taglib <html> (II)
   Todos los tags tienen los mismos
    atributos
       name: Nombre del ActionForm o JavaBean
       on*: Tags de eventos Javascript
       accesskey: Tecla de acceso rápido de
        acceso a este elemento
       tabindex: Orden para focus con tabulador
       style: Estilo CSS
       StyleClass: Hoja de estilos CSS
Taglib <logic> (I)
       Tres tipos:
         Evaluación: Valor ==, >, <, o presente
         Control de flujo: Redirección/Forward del request
         Repetición: Iteración sobre colección
       Tags de evaluación
         Generalmente para diferentes vistas dentro de una misma
          página
          <logic:notPresent name="logonForm">
              <html:link forward="logon">Sign in here</html:link>
          </logic:notPresent>
          <logic:present name="logonForm">
              <html:link forward="logoff">Sign out</html:link>
          </logic:present>
         Pueden comparar valor con cookie, cabecera HTTP,
          paramero del request, bean o propiedad de un bean
Taglib <logic> (II)
   Tags de control de flujo
       Uso típico redirección index.jsp a un action
          <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
          <logic:forward name="welcome"/>

   Tags de repetición
        <UL>
           <logic:iterate id="item" name="list">
              <LI><bean:write name="item"/></LI>
           </logic:iterate>
        </UL>
Usos habituales
   Ejemplo. Login:
         <%@ taglib uri="/tags/struts-html" prefix="html" %>
         <html:html>
         <HEAD><TITLE>Sign in, Please!</title></head>
         <BODY>
         <html:errors/>
         <html:form action="/logonSubmit"
         name="logonForm" type="app.LogonForm" scope="request">
         <TABLE border="0" width="100%">
         <TR><TH>Username: </TH>
         <TD><html:text property="username"/></TD>
         </TR>
         <TR><TH>Password: </TH>
         <TD><html:password property="password"/></TD>
         </TR>
         <TR>
         <TD><html:submit/></TD>
         <TD><html:reset/></TD>
         </TR>
         </TABLE>
         </html:form>
         </BODY>
         </html:html>
Usos habituales (II)
       Declaración de un formulario
         <html:form></html:form>
         <html:form action="/logonSubmit"
         name="logonForm" type="app.LogonForm" scope="request">
         Todo elemento dentro del formulario referenciará
          por defecto al Bean (o ActionForm) logonForm que
          es una instancia de LogonForm en el contexto del
          objeto request
         <html:errors/> Imprime errores anteriores al rellenar
          formulario
Usos habituales (III)
       Rellenar control HTML
          <html:text property="username"/>
         Equivale a (ejemplo anterior):
          <input type="text“ name=“username” value="<%=
          logonForm.getUsername() %>"">
             logonForm es un bean obtenido del request
       Selección de radio button
          <html:radio property="expectedVia" value="UPS"/>UPS
          <html:radio property="expectedVia"
             value="FEDX"/>Federal Express
          <html:radio property="expectedVia"
             value="AIRB"/>Airborne
            Habilita como checked la opción cuyo valor coincida con el valor
             de la propiedad
Usos habituales (IV)
   Utilizar una colección para control options
         Colección propiedad de un ActionForm
          <TR>
          <TD>Item Image Source:</TD>
          <TD><html:select property="hasImage">
          <html:options property="imageOptions" />
          </html:select>
          </TD>
          </TR>
         Colección propiedad de un Bean aparte (de request, session o
          application)
          <TR>
          <TD>Item Image Source:</TD>
          <TD><html:select property="hasImage">
          <html:options collection="imageOptions" />
          </html:select>
          </TD>
          </TR>
Usos avanzados (I)
   Iterar sólo sobre una parte de una
    colección
       P.e. avanzar de 5 en 5 elementos
        empezando del 5º:
        <logic:iterate id="element" name="list" offset="5"
            length="5">
       Hacer disponible variable de iteración
        <OL>
        <logic:iterate id="element" name="list" indexId="index">
        <LI><EM><bean:write name="element"/></EM>
        [<bean:write name="index"/>]</LI>
        </logic:iterate>
        </OL>
Usos avanzados (II)
       Anidar expresiones de lógica
         Verificar que un bean existe y su propiedad no es nula
          <logic:present name="bean"><logic:notEmpty name="bean"
              property="value">
          <bean:write name="bean" property="value"/>
          </logic:empty></logic:present>
       Utilización de <html:rewrite> para referenciar recursos
        HTML (.js, .css, etc)
         Convierte URI relativa al contexto en URI relativa a la
          aplicación (visible desde fuera)
         Se puede definir como ActionForward en struts-config.xml y
          referenciarla simbólicamente:

          <LINK rel="stylesheet" type="text/css"
          href="<html:rewrite forward='baseStyleSheet'/>">

Más contenido relacionado

PPTX
Java Web - JSP
PDF
Web2py: Pensando en grande
PDF
Jsp directiva page
PDF
CSA - Web Parts en SharePoint 2010
DOCX
Java beans en jsp
PDF
Persistencia de datos en Java
PPTX
Comunicacion entre formularios HTML y paginas JSP
Java Web - JSP
Web2py: Pensando en grande
Jsp directiva page
CSA - Web Parts en SharePoint 2010
Java beans en jsp
Persistencia de datos en Java
Comunicacion entre formularios HTML y paginas JSP

La actualidad más candente (20)

PDF
Acceso a BBDD mediante un servlet
PDF
Acciones JSP
PDF
02%20 ant
PDF
jQuery 1.3 Eghost Julio2009
PDF
Symfony 2 CMF
PDF
Bases de Datos en Java - Intro a JDBC
PDF
PDF
Servlets que manejan datos de formularios HTML
PDF
88 Php. Imagenes En Tablas
PDF
Servicio web java php perl google
PDF
Persistencia en Java - Serialización
ODP
Curso Jsp
PDF
Servlet Hola Mundo con Eclipse y Tomcat
DOC
PDF
Manual Basico de jQuery
PPTX
12.android servicios web
PDF
Integración de aplicaciones Java
PDF
Guia N5 Proyectos Web Consultas Php Y My Sql
PDF
Seguridad en PDF: Adobe ¬¬
Acceso a BBDD mediante un servlet
Acciones JSP
02%20 ant
jQuery 1.3 Eghost Julio2009
Symfony 2 CMF
Bases de Datos en Java - Intro a JDBC
Servlets que manejan datos de formularios HTML
88 Php. Imagenes En Tablas
Servicio web java php perl google
Persistencia en Java - Serialización
Curso Jsp
Servlet Hola Mundo con Eclipse y Tomcat
Manual Basico de jQuery
12.android servicios web
Integración de aplicaciones Java
Guia N5 Proyectos Web Consultas Php Y My Sql
Seguridad en PDF: Adobe ¬¬
Publicidad

Similar a 05 jsp tags (20)

PPTX
Hibernate 3.2 short manual
PDF
Hands-on Spring 3: The next generation
PDF
Introducción a Tomcat
ODP
Tutorial3 Desymfony - La Vista. Twig
PDF
Manual Basico De Struts
PDF
Un poco más allá con grails. PrimerViernes
PPTX
Novedades de aries
PPT
Mootools Y Otros Frameworks JS
PPSX
Persistencia De Objetos(Hibernate)
PPSX
Persistencia de objetos con Hibernate
PPT
01 introducción
PDF
Find File Servlet DB
PPTX
Novedades de aries
PPT
Curso Java Avanzado 6 Struts
PPT
Persistencia de un modelo de objetos
PDF
Manual Java Xml Html
ODP
San Luis Oct 2008
ODP
San Luis Oct 2008
Hibernate 3.2 short manual
Hands-on Spring 3: The next generation
Introducción a Tomcat
Tutorial3 Desymfony - La Vista. Twig
Manual Basico De Struts
Un poco más allá con grails. PrimerViernes
Novedades de aries
Mootools Y Otros Frameworks JS
Persistencia De Objetos(Hibernate)
Persistencia de objetos con Hibernate
01 introducción
Find File Servlet DB
Novedades de aries
Curso Java Avanzado 6 Struts
Persistencia de un modelo de objetos
Manual Java Xml Html
San Luis Oct 2008
San Luis Oct 2008
Publicidad

Más de Roberto Moreno Doñoro (20)

PPT
21 bibsw tablasyotros
PPT
20 curvaselipticas
PPT
19 protocoloscripto
PPT
18 correoseguro
PPT
17 certdigitalespkcs
PPT
16 autenticafirma
PPT
15 funcioneshash
PPT
14 cifraasimetrica
PPT
13 ciframochilas
PPT
12 cifrasimetrica
PPT
11 cifraflujo
PPT
10 ciframoderna
PPT
09 cifraclasica
PPT
08 compalgoritmos
PPT
07 teorianumeros
PPT
06 teoriainfo
PPT
05 gestionseg
PPT
04 calidadinfo
PPT
02 breveintrocripto
PPT
01 presentalibro
21 bibsw tablasyotros
20 curvaselipticas
19 protocoloscripto
18 correoseguro
17 certdigitalespkcs
16 autenticafirma
15 funcioneshash
14 cifraasimetrica
13 ciframochilas
12 cifrasimetrica
11 cifraflujo
10 ciframoderna
09 cifraclasica
08 compalgoritmos
07 teorianumeros
06 teoriainfo
05 gestionseg
04 calidadinfo
02 breveintrocripto
01 presentalibro

Último (20)

PDF
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
Metodologías Activas con herramientas IAG
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PPTX
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
DOCX
Informe_practica pre Final.docxddadssasdddddddddddddddddddddddddddddddddddddddd
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
DOCX
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PPTX
Doctrina 1 Soteriologuia y sus diferente
PDF
Híper Mega Repaso Histológico Bloque 3.pdf
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
DI, TEA, TDAH.pdf guía se secuencias didacticas
Metodologías Activas con herramientas IAG
Punto Critico - Brian Tracy Ccesa007.pdf
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Tomo 1 de biologia gratis ultra plusenmas
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
AGENTES PATÓGENOS Y LAS PRINCIPAL ENFERMEAD.pptx
V UNIDAD - PRIMER GRADO. del mes de agosto
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
Informe_practica pre Final.docxddadssasdddddddddddddddddddddddddddddddddddddddd
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
Doctrina 1 Soteriologuia y sus diferente
Híper Mega Repaso Histológico Bloque 3.pdf
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe

05 jsp tags

  • 1. Páginas dinámicas con tags JSP mayo de 2005
  • 2. ¿Qué son?  JSP incorpora tags <jsp:xxx …>  Generalmente manejo de propiedades de beans, incluir otros JSPs …  Funcionalidad limitada  Extensiones:  Definición de nuevos Tags <mi-tag:mi-funcion>  Llamada a función Java a través de sintáxis XML  Hacen uso de Java Tag Extension API
  • 3. ¿Para qué sirven?  JSPs resolvían problema de servlets  Más elegancia al escribir HTML  Ventajas de JSPs  Más fáciles de mantener por no programadores  HTML estático  Limitación presentación. Necesaria cierta lógica en presentación. Solución JSP:  Scriptlets (<% %>)  Rápidos  Menos familiar para diseñador  Páginas pierden estilo y claridad  Extensiones  Más costosas de programar en un principio  Más sencillas de utilizar  Mejor mantenimiento  Separación más clara Lógica – Presentación  Utilización más sencilla por diseñador (son tags XML)  Mejor integración con HTML
  • 4. ¿Qué aporta Struts?  Struts ha escrito sus propias extensiones para tareas comunes  Manejo de beans  Internacionalización  Lógica (iteracción, chequeo de propiedades, etc.)  Simplificación controles HTML <html:xxx>  Alternativas  Especificación JSTL (Java Standard Tag Library)  Definición oficial Sun  Estándar oficial. Requiere JSP 2.0 (p.e. Tomcat 5).  Primera implementación Jakarta Apache Taglibs  Puede usarse con Struts  Funcionalidad complementaria o alternativa a tags Struts
  • 5. ¿Cómo se escribe una Tag Extension?  Definición formato de tag  Fichero tld con sintaxis XML.  Debe verificar DTD de acuerdo a versión JSP utilizada <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">  Codificación lógica de tag: public class BaseTag extends TagSupport { // ... public int doStartTag() throws JspException { HttpServletRequest request = (HttpServletRequest)pageContext.getRequest(); StringBuffer buf = new StringBuffer("<base href=""); buf.append(request.getScheme()); buf.append("://"); buf.append(request.getServerName()); buf.append(request.getRequestURI()); buf.append("""); if (target != null) { buf.append(" target=""); buf.append(target); buf.append("""); } buf.append(">"); JspWriter out = pageContext.getOut(); try { out.write(buf.toString()); } catch (IOException e) { pageContext.setAttribute(Action.EXCEPTION_KEY, e, PageContext.REQUEST_SCOPE); throw new JspException(messages.getMessage("common.io", e.toString())); } return EVAL_BODY_INCLUDE; } }
  • 6. ¿Cómo se utilizan Tag Extensions?  Instalar ficheros TLD y JAR WEB-INFlibstruts.jar WEB-INFstruts-bean.tld WEB-INFstruts-html.tld WEB-INFstruts-logic.tld  Configurar web.xml <web-app> <!-- ... Otros elementos ... --> <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> </web-app>
  • 7. ¿Cómo se utilizan Tag Extensions? (II)  Referenciar definiciones taglib en JSP <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-html" prefix="html" %>  Atributo URI especificado en web.xml  Utiliza los tags dentro del JSP <bean:write name="userForm" property="firstName"/>
  • 8. Tipos taglibs de Struts  Librerías incluidas  Bean  Acceso a propiedades de JavaBeans  Html  Relaciona campos formularios HTML con framework Struts  Logic  Generación condicional de salida (HTML) en base a recorrido de colecciones, control de flujo, etc  Nested  Proporcionan capacidades de anidamiento a otras tags  Tiles  Permiten crear páginas en base a piezas (tiles). (Vistas más adelante)
  • 9. Características comunes  Ámbito automático  Los objetos se almacenan en uno de estos ámbitos (menor a mayor persistencia): page, request, session o application  Todos los tags buscan el objeto referido en todos los ámbitos: Se quedan con primera estancia  Puede fijarse el ámbito de búsqueda: argumento scope  Nombres de propiedades comunes  Propiedades típicas de cada tag:  Id: nombre de variable creada por un tag  Name: nombre simbólico del bean (nombre del atributo)  Property: propiedad del bean  Scope: ámbito donde buscar el bean
  • 10. Características comunes (II)  Sintaxis extendida  Referencia anidada property=“a.b.c”  getA().getB().getC() / getA().getB()setC(valor)  Referencia indexada (desde 1.1) property=“a[2]”  getA(2) / setA(2, valor)  Scriptlets dentro de tags  Uso como último recurso, pero posible <html:link href=‘<%= "/" + name + "/index.jsp" %>’>  Gestión de errores común  Atributo “org.apache.struts.action.EXCEPTION” del request  Nombre de JSP de tratamiento
  • 11. Taglib <bean>  Lista de tags Nombre Tag Descripción cookie Define variable scripting basado en el valor de una cookie define Define variable scripting basado en el valor de una propiedad de bean header Define variable scripting basado en el valor de una cabecera del request include Carga el objeto response y lo hace disponible como bean message Muestra mensaje internacionalizado desde etiqueta page Hace disponible un objeto del contexto page como bean parameter Hace disponible un parámetro del contexto request como variable resource Carga recurso web y lo hace disponible como bean size Define un bean que contiene el número de elementos de una colección struts Expone la configuración de struts como un objeto write Imprime valor de una propiedad de un bean
  • 12. Taglib <bean> (II)  Tags más importantes:  Tag <bean:write>  Acceso de lectura a propiedades de beans <bean:write name="shoppingCart" property="itemSum"/>  Tag <bean:message>  Imprime mensaje internacionalizado  Se fija en el locale solicitado por el cliente en el request  Extrae literal de fichero properties especificado en struts- config.xml.(Puede haber varios  bundle) <bean:message key=“inquiry” />  es_ES  ¿Cómo está usted?  de_DE  Wie geht es Ihnen?
  • 13. Taglib <html> (I)  Diseñados para rellenar formularios con datos dinámicos <input type="text" name="firstName“ value="< %=formBean.getFirstName()%>"/> equivale <html:text property="firstName"/>  El bean no necesita ser referenciado. Por defecto el mismo para toda el formulario  Hay tantos tags como controles HTML. P.e.: <html:file>  <input type=“file”/> <html:img>  <img> <html:radio>  <input type=“radio”>
  • 14. Taglib <html> (II)  Todos los tags tienen los mismos atributos  name: Nombre del ActionForm o JavaBean  on*: Tags de eventos Javascript  accesskey: Tecla de acceso rápido de acceso a este elemento  tabindex: Orden para focus con tabulador  style: Estilo CSS  StyleClass: Hoja de estilos CSS
  • 15. Taglib <logic> (I)  Tres tipos:  Evaluación: Valor ==, >, <, o presente  Control de flujo: Redirección/Forward del request  Repetición: Iteración sobre colección  Tags de evaluación  Generalmente para diferentes vistas dentro de una misma página <logic:notPresent name="logonForm"> <html:link forward="logon">Sign in here</html:link> </logic:notPresent> <logic:present name="logonForm"> <html:link forward="logoff">Sign out</html:link> </logic:present>  Pueden comparar valor con cookie, cabecera HTTP, paramero del request, bean o propiedad de un bean
  • 16. Taglib <logic> (II)  Tags de control de flujo  Uso típico redirección index.jsp a un action <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <logic:forward name="welcome"/>  Tags de repetición <UL> <logic:iterate id="item" name="list"> <LI><bean:write name="item"/></LI> </logic:iterate> </UL>
  • 17. Usos habituales  Ejemplo. Login: <%@ taglib uri="/tags/struts-html" prefix="html" %> <html:html> <HEAD><TITLE>Sign in, Please!</title></head> <BODY> <html:errors/> <html:form action="/logonSubmit" name="logonForm" type="app.LogonForm" scope="request"> <TABLE border="0" width="100%"> <TR><TH>Username: </TH> <TD><html:text property="username"/></TD> </TR> <TR><TH>Password: </TH> <TD><html:password property="password"/></TD> </TR> <TR> <TD><html:submit/></TD> <TD><html:reset/></TD> </TR> </TABLE> </html:form> </BODY> </html:html>
  • 18. Usos habituales (II)  Declaración de un formulario  <html:form></html:form> <html:form action="/logonSubmit" name="logonForm" type="app.LogonForm" scope="request">  Todo elemento dentro del formulario referenciará por defecto al Bean (o ActionForm) logonForm que es una instancia de LogonForm en el contexto del objeto request  <html:errors/> Imprime errores anteriores al rellenar formulario
  • 19. Usos habituales (III)  Rellenar control HTML <html:text property="username"/>  Equivale a (ejemplo anterior): <input type="text“ name=“username” value="<%= logonForm.getUsername() %>"">  logonForm es un bean obtenido del request  Selección de radio button <html:radio property="expectedVia" value="UPS"/>UPS <html:radio property="expectedVia" value="FEDX"/>Federal Express <html:radio property="expectedVia" value="AIRB"/>Airborne  Habilita como checked la opción cuyo valor coincida con el valor de la propiedad
  • 20. Usos habituales (IV)  Utilizar una colección para control options  Colección propiedad de un ActionForm <TR> <TD>Item Image Source:</TD> <TD><html:select property="hasImage"> <html:options property="imageOptions" /> </html:select> </TD> </TR>  Colección propiedad de un Bean aparte (de request, session o application) <TR> <TD>Item Image Source:</TD> <TD><html:select property="hasImage"> <html:options collection="imageOptions" /> </html:select> </TD> </TR>
  • 21. Usos avanzados (I)  Iterar sólo sobre una parte de una colección  P.e. avanzar de 5 en 5 elementos empezando del 5º: <logic:iterate id="element" name="list" offset="5" length="5">  Hacer disponible variable de iteración <OL> <logic:iterate id="element" name="list" indexId="index"> <LI><EM><bean:write name="element"/></EM> [<bean:write name="index"/>]</LI> </logic:iterate> </OL>
  • 22. Usos avanzados (II)  Anidar expresiones de lógica  Verificar que un bean existe y su propiedad no es nula <logic:present name="bean"><logic:notEmpty name="bean" property="value"> <bean:write name="bean" property="value"/> </logic:empty></logic:present>  Utilización de <html:rewrite> para referenciar recursos HTML (.js, .css, etc)  Convierte URI relativa al contexto en URI relativa a la aplicación (visible desde fuera)  Se puede definir como ActionForward en struts-config.xml y referenciarla simbólicamente: <LINK rel="stylesheet" type="text/css" href="<html:rewrite forward='baseStyleSheet'/>">