Entradas

Mostrando las entradas con la etiqueta struts

campos tipo arreglo en Struts

Los arreglos nos ayudan mucho en la programación... se puede almacenar muchos valores en una misma variable, y se pueden diferenciar a través del índice. En la web (utilizando Struts 1), es posible que necesitemos campos variables que funcionen como arreglo. Es decir, un mismo formulario que tenga una vez 10 campos, la siguiente vez 15, y la siguiente 2 campos. Para ello, nuestro ActionForm deberá tener un campo arreglo: public class Formulario extends ActionForm { private String[] pregunta=new String[10]; public String[] getPregunta() { return pregunta; } public void setPregunta(String[] pregunta) { this.pregunta = pregunta; } Y en la capa de presentación (o sea, en el JSP) deberá mostrarse cada campo con un índice: Pregunta 1:<html:text property="pregunta[0]"/><br/> Pregunta 2:<html:text property="pregunta[1]"/><br/> Pregunta 3:<html:text property="pregunta[2]"/><br/> Si se está usando un DynaActionForm, la so

Cambiando la versión de la aplicación web (de especificación 2.3 a 2.4)

Recién me doy cuenta. Resulta que al hacer una aplicación en Eclipse importando el archivo blank.war de Struts 1.x, no podría usar expresiones como ${variable} si desea mostrar directamente en un .JSP el valor de esa variable de sesión. El lenguaje de expresiones (más conocido como EL) está disponible recién en la versión 2.4 de JSP . La versión que importé del archivo blank.war era la 2.3. Entonces ¿dónde cambio la versión de la especificación? Pues en el archivo web.xml El que importé decía esto: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> ... Por tanto, para cambiar la versión de la aplicación, debería cambiar con lo siguiente <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XM

Tiles en Struts 1.3

Comencé a migrar una aplicación hecha con Struts 1.2 para que utilizará Struts 1.3 Simplemente (pensé) sería copiar el contenido del struts-config.xls (manteniendo el DTD), obviamente usar los .jar respectivos, utilizar el mismo tiles-defs.xml, pero... no funcionó. Respondía el error 404 (no encuentra página). Después de un día perdido,revisé la documentación http://struts.apache.org/1.3.8/struts-tiles/installation.html y pues la solución era sencilla (algo nuevo con respecto al struts 1.2): Agregar el siguiente parámetro de inicialización del Action Servlet. <init-param> <param-name>chainConfig</param-name> <param-value>org/apache/struts/tiles/chain-config.xml</param-value> </init-param> hora, todo funciona como debería ser. ... no olvidar, siempre leer la documentación.

Struts 2 en Eclipse (parte 1)

Imagen
Pues, no utilizaré Eclipse, sino JBuilder 2007 que es lo mismo (me descepcionó la "mejora" que hizo Borland por este IDE) Creando una nueva aplicación Descargar el Struts de la web: http://struts.apache.org/download.cgi . Preferible si es la distribución completa. Descomprimir el archivo en un directorio. En el Eclipse (o JB2007), entrar el menú "File | Import...". Seleccionar Web > War File: Seleccionar el archivo struts2-blank.war que se encuentra en el directorio $STRUTS2/apps/. Además, escribir un nombre para el nombre del proyecto web nuevo: Clic en Finish. Examinando el proyecto El Struts2 viene con mejoras significativas. Prácticamente es otro framework, pero mantiene el espíritu principal de Struts: Actions + Forms. Ya no usa un Servlet, sino un Filter. Eso lo podemos ver en el archivo web.xml. El archivo de configuración ya no está en WEB-INF, sino es un recurso del proyecto. Podemos encontrar el archivo struts.xml en el directorio de fuentes .java (src

JSP Invisibles (con Struts)

No es buena idea que se accedan directamente a los JSP. Debería hacerse a través de un Action, o un forward: <html:link action="/algunAction">...</html:link> Y para asegurarnos de que no lo va hacer, es mejor protegerlo desde la configuración de la aplicación web: <web-app> ... <security-constraint> <web-resource-collection> <web-resource-name>no_access</web-resource-name> <url-pattern>*.jsp</url-pattern> </web-resource-collection> <auth-constraint> </auth-constraint> ... </security-constraint> </web-app>