Programación en castellano
Inicio > Tutoriales > APIS Java > Manual Básico de Struts
-Tutoriales

Manual Básico de Struts


View

. Intro

La View comprende las JSP (principalmente) y los servlets involucrados en la generación de la interfaz de usuario o con otros Sistemas. Struts provee soporte para construir aplicaciones multi-idioma, interacción con formularios y otras utilidades mediante la utilización de Tags especiales (TagLibraries).

. Internacionalización

Lo podemos abreviar en la siguiente receta:

  1. Crear un archivo de texto (ej: MiAplicacion.properties) en el directorio donde se encuentren las clases de la aplicación (ej: d:\com\empresa\aplicacion) donde se contengan las claves y valores con el formato clave.subclave=texto de los textos que pertenezcan al idioma principal. Ejemplo:
  2. ...
    application.title= Demo de Struts en APLICACION
    index.header=Bienvenido a la Demo de Struts en APLICACION
    ...
    
  3. Para cada idioma alternativo se creará un archivo nuevo que se llame igual pero que termine en "_xx.properties" siendo xx el código ISO de idioma (ej: MiAplicación_en.properties).
  4. En struts-config.xml se debe configurar el Tag /servlet/init-param/param-name application y ponerle como param-value la localización del archivo con el idioma principal. Ejemplo:
  5. <servlet>
        <servlet-name>action</servlet-name>
        ...
        <init-param>
          <param-name>application</param-name>
          <param-value>com.empresa.aplicacion.MiAplicacion</param-value>
        </init-param>
        ...
    
  6. En web.xml deberemos inclur:
  7. <web-app>
      ...
      <taglib>
        <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
      </taglib>
      ...
    </web-app>
    
  8. En las JSPs donde utilicemos la internacionalización deberemos incluir al comienzo:
  9. ...
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    ...
    

    para declarar que utilizaremos la TagLibrary struts-bean con el prefijo bean y definida en /WEB-INF/struts-bean.tld

  10. Y finalmente, utilizaremos el Tag <bean:message key="clave.subclave"/> donde clave y subclave corresponden al texto por el que se reemplazará según el idioma del usuario. Ejemplo
  11. ...
    <TITLE><bean:message key="application.title"/></TITLE>
    ...
    

Por defecto Struts asigna a cada usuario el idioma principal de la aplicación. Si se utiliza el tag <html:html locale="true"> (reemplaza a "<html>" y debe cerrarse con "</html:html>") entonces se utilizará el primero de los idiomas soportados por la aplicación que se encuentre en el header "Accept-Language" enviado por su navegador. Pero si se desea proponerle al usuario una lista de idiomas entonces éste podrá cambiarse mediante session.setAttribute( Action.LOCALE_KEY, new java.util.Locale(country, language)) donde country y language serán el string del país e idioma a establecer.

Además de texto podran incluirse variables (al igual que se hace en los println) y hasta formato de datos. Para más información ver la documentación oficial de Sun disponible en http://java.sun.com/j2se/1.3/docs/guide/intl/

. Forms

Una de las tareas que durante el desarrollo de una aplicación insume mucho trabajo (aunque en realidad no lo merezcan) es la interacción con formularios, ya sea para editar u obtener nueva información. Las comprobaciones, la gestión de errores, el volver a presentarle el mismo form al usuario con los valores que puso y los mensajes de error y un largo etcétera están soportadas por Struts a fines de hacernos la vida un poco más fácil.

La idea es la siguiente: todo el trabajo de comprobaciones y generación de mensajes de error se implementa en los ActionForm y todo el trabajo de generación de interfaz en la/s JSP.

Veamos la receta:

  1. Crear el ActionForm (ver la sección Model / ActionForm Beans)
  2. Crear la página JSP del formulario utilizando los Tags que provee Struts (ver la sección View / Tags). Ejemplo:
  3. ...
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    ...
    <html:html>
    ...
       <html:form action="/logon" focus="username">
    ...
         <h1><bean:message key="logon.header"/></h1>
         <html:form action="/logon" focus="username">
         <h5><html:errors/></h5>
         <h3><bean:message key="logon.mainText"/></h3>
         <p><bean:message key="logon.username"/>
               <html:text property="username" size="16" maxlength="16"/></p>
         <p><bean:message key="logon.password"/>
               <html:password property="password" size="16" maxlength="16" redisplay=false/></p>
         <p><html:submit property="submit" value="Submit"/></p>
         <p><html:reset/></p>
    ...
       </html:form>
    ...   
    </html:html>
    
  4. Declarar el ActionForm en struts-config.xml agregando en /struts-config/form-beans el tag <form-bean name="nombreForm" type="paquete.clase"/> y en la declaración del Action (ver la sección Controller / Action Beans) agregar los atributos name="nombreForm", scope="(request ó session)", e input="paginaForm.jsp". Ejemplo:
  5. <struts-config>
      ...
      <form-beans>
      ...
       <form-bean  name="logonForm" type="com.empresa.aplicacion.LogonForm"/>
      ...
      </form-beans>
      ...
      <action-mappings>
      ...
       <action path="/logon" type="com.empresa.aplicacion.LogonAction" name="logonForm" 
                   scope="request" input="/logon.jsp">
        ...
       </action>
       ...
      <action-mappings>
      ...
    </struts-config>
    

. Tags

Básicamente, un Tag de JSP consiste en un Tag con formato <prefijoTagLib:nombreTag atributo=valor ... > que cuando la JSP se compila es sustituído por una llamada a la clase TagHandler que se encarga de resolver su funcionalidad.

El TagHandler extiende BodyTagSupport o TagSupport (según si es un tag que tiene body), que implementa su funcionalidad en los métodos doStartTag(), doEndTag(),doInitBody(), doAfterBody() (los dos últimos sólo en las que extienden BodyTagSupport), además de los getters y setters correspondientes a sus atributos. Esta clase se define en un Tag Library Definition (archivo xml con extensión TLD donde se define el nombre del tag, la clase TagHandler que lo atiende, la definición de sus atributos, si tiene body, etc.) que a su vez se debe declarar en el web.xml (dentro de <web-app> se pone <taglib> <taglib-uri> nombreTagLib </taglib-uri> <taglib-location>/directorios/nombreArchivo.tld </taglib-location> </taglib>) y en la JSP donde se utilizará (<%@ taglib uri="nobreTagLib" prefix="prefijoTagLib" %>). Finalmente, el Tag que se usa en la JSP consiste en <prefijoTagLib:nombreTag atributo=valor ... >. Para más info, ver la página oficial de Sun sobre TagLibraries en http://java.sun.com/products/jsp/taglibraries.html.

La funcionalidad de los Tags incluídos en Struts se encuentran documentados en:

Las clases TagHandlers que implementan dicha funcionalidad están documentadas en:

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados