Foros del Web » Programación para mayores de 30 ;) » Java »

[Problema] - Struts2 + <s:select ...

Estas en el tema de [Problema] - Struts2 + <s:select ... en el foro de Java en Foros del Web. Buenas tardes a todos, Estoy programando una aplicación... un proyecto web (struts2 + Hibernate + Tomcat 6.0). Estoy probando la funcionalidad de la etiqueta select... ...
  #1 (permalink)  
Antiguo 27/08/2010, 08:00
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
[Problema] - Struts2 + <s:select ...

Buenas tardes a todos,

Estoy programando una aplicación... un proyecto web (struts2 + Hibernate + Tomcat 6.0).

Estoy probando la funcionalidad de la etiqueta select... para por ejemplo.. seleccionar un pais...etc.

[URL="http://mundogeek.net/wp-content/struts-2-select.png"]http://mundogeek.net/wp-content/struts-2-select.png[/URL]

La cosa es, que cada vez que arranco el servidor ejecutando el programa en él... pues da errores. Decir que estoy usando Eclipse y en el log de la consola, el error que figúra es el siguiente:

Cita:
type Informe de Excepción

mensaje

descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.

excepción

org.apache.jasper.JasperException: tag 'select', field 'list', name 'country': The requested list key 'countryList' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:491)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.struts2.dispatcher.ng.filter.StrutsPrep areAndExecuteFilter.doFilter(StrutsPrepareAndExecu teFilter.java:73)


causa raíz

tag 'select', field 'list', name 'country': The requested list key 'countryList' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
org.apache.struts2.components.Component.fieldError (Component.java:230)
org.apache.struts2.components.Component.findValue( Component.java:351)
org.apache.struts2.components.ListUIBean.evaluateE xtraParams(ListUIBean.java:80)
org.apache.struts2.components.Select.evaluateExtra Params(Select.java:105)
org.apache.struts2.components.UIBean.evaluateParam s(UIBean.java:856)
org.apache.struts2.components.UIBean.end(UIBean.ja va:510)
org.apache.struts2.views.jsp.ComponentTagSupport.d oEndTag(ComponentTagSupport.java:42)
org.apache.jsp.resultado_jsp._jspx_meth_s_005fsele ct_005f0(resultado_jsp.java:162)
org.apache.jsp.resultado_jsp._jspx_meth_s_005fform _005f0(resultado_jsp.java:117)
org.apache.jsp.resultado_jsp._jspService(resultado _jsp.java:77)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.struts2.dispatcher.ng.filter.StrutsPrep areAndExecuteFilter.doFilter(StrutsPrepareAndExecu teFilter.java:73)


nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/6.0.29

Ahora os detallo el miniprograma de prueba, que resulta que no me funciona...


La vista: resultado.jsp

Cita:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Listado</title>

</head>

<body>

<s:form action="accion">

<s:select name="country" list="countryList" headerKey="0" headerValue="Country"
label="Select a country" />

<s:submit value="Enviar"/>

</s:form>

</body>

</html>
La accion: accion.jsp

Cita:
package vaannila;

import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;


@SuppressWarnings("serial")
public class accion extends ActionSupport {
private String country;

private ArrayList<String> countryList;

public String execute()
{
countryList = new ArrayList<String>();
countryList.add("India");
countryList.add("USA");
countryList.add("France");
return SUCCESS;
}




//***
public String getCountry() {
return country;
}

public void setCountry(String country) {
this.country = country;
}

public ArrayList<String> getCountryList() {
return countryList;
}

public void setCountryList(ArrayList<String> countryList) {
this.countryList = countryList;
}
//***

}

Fichero struts.xml

Cita:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<package name="default" extends="struts-default">


<action name="accion" method="{1}" class="vaannila.accion">
<result name="success">resultado.jsp</result>
</action>


</package>
</struts>
Os pondré tambien el web.xml , para que tengais todo el proyecto web al completo.

Cita:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Struts2Example7</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrep areAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>resultado.jsp</welcome-file>
</welcome-file-list>
</web-app>

En fin, espero que podais arrojarme algo de luz, porque la verdad que lo estoy pasando mal con este "error" y no se de que puede ser...

Deciros que ese codigo es una parte de un ejemplo que vi en una web... donde su autor publico el codigo en un ".war" y ese .war me va perfectamente!. Pero resulta que de todo ese código unicamente me interesa el "select" y no soy capaz de hacer eso, un simple select con struts2.

La web en cuestión:
[http://www.vaannila.com/struts-2/struts-2-example/struts-2-ui-tags-example-1.html


Un saludo y muchas gracias por leerme.
  #2 (permalink)  
Antiguo 27/08/2010, 08:03
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Aclaración:

Como podeis ver, es un simple listado seleccionable de paises.
  #3 (permalink)  
Antiguo 27/08/2010, 08:10
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Me he tomado la libertad, de subir mi código a megaupload para que podais comprobar por ustedes mismo el error.


Enlace -> http://www.megaupload.com/?d=TKCN1VIK
  #4 (permalink)  
Antiguo 27/08/2010, 08:42
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: [Problema] - Struts2 + <s:select ...

Podrías mejor poner tu código fuente en lugar de tu war? bajé el war pero estaría mejor el source. Ah y de ser posible junto con el proyecto eclipse para que me sea más fácil cargarlo.
  #5 (permalink)  
Antiguo 27/08/2010, 08:55
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Cita:
Iniciado por hualro Ver Mensaje
Podrías mejor poner tu código fuente en lugar de tu war? bajé el war pero estaría mejor el source. Ah y de ser posible junto con el proyecto eclipse para que me sea más fácil cargarlo.

El código fuente esta puesto arriba. Entre Quote´s.


Un proyecto .war... se compone de vistas + acciones + xml


Esta todo arriba. Ademas en el .war esta absolutamente todo amigo.

Aunque ahora mismo subiré el proyecto eclipse.

Por cierto, para cargar el .war en eclipse, unicamente has de importarlo y listo!. File >> Import.

Thanks.
  #6 (permalink)  
Antiguo 27/08/2010, 09:18
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: [Problema] - Struts2 + <s:select ...

Prueba con

Código PHP:
public List<StringgetCountryList() {
return 
countryList;

  #7 (permalink)  
Antiguo 27/08/2010, 09:24
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Cita:
Iniciado por Xerelo Ver Mensaje
Prueba con

Código PHP:
public List<StringgetCountryList() {
return 
countryList;


He probado y...

Cita:
type Informe de Excepción

mensaje

descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.

excepción

org.apache.jasper.JasperException: tag 'select', field 'list', name 'country': The requested list key 'countryList' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:527)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.struts2.dispatcher.ng.filter.StrutsPrep areAndExecuteFilter.doFilter(StrutsPrepareAndExecu teFilter.java:73)


causa raíz

tag 'select', field 'list', name 'country': The requested list key 'countryList' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
org.apache.struts2.components.Component.fieldError (Component.java:230)
org.apache.struts2.components.Component.findValue( Component.java:351)
org.apache.struts2.components.ListUIBean.evaluateE xtraParams(ListUIBean.java:80)
org.apache.struts2.components.Select.evaluateExtra Params(Select.java:105)
org.apache.struts2.components.UIBean.evaluateParam s(UIBean.java:856)
org.apache.struts2.components.UIBean.end(UIBean.ja va:510)
org.apache.struts2.views.jsp.ComponentTagSupport.d oEndTag(ComponentTagSupport.java:42)
org.apache.jsp.resultado_jsp._jspx_meth_s_005fsele ct_005f0(resultado_jsp.java:158)
org.apache.jsp.resultado_jsp._jspx_meth_s_005fform _005f0(resultado_jsp.java:115)
org.apache.jsp.resultado_jsp._jspService(resultado _jsp.java:76)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.struts2.dispatcher.ng.filter.StrutsPrep areAndExecuteFilter.doFilter(StrutsPrepareAndExecu teFilter.java:73)


nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/6.0.29.



Gracias de todas formas.
  #8 (permalink)  
Antiguo 27/08/2010, 10:10
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: [Problema] - Struts2 + <s:select ...

Es muy sencillo tu error, no es problema del tag o algo así.

tu index.jsp contiene un meta tag para redirigir a un action que no está mapeado en ninguna parte de tu struts.xml. Por lo tanto, tu lista de paises no se crea nunca.

Para solucionarlo necesitas declarar ese action en struts e inicializar tu arrayList y regresar al resultado.

O, lo que yo hice fue cambiar ese tag por el accion que ya tenías y que inicializa tu list.

antes:
Código HTML:
Ver original
  1. <META HTTP-EQUIV="Refresh" CONTENT="0;URL=populateRegister.action">

despues:
Código HTML:
Ver original
  1. <META HTTP-EQUIV="Refresh" CONTENT="0;URL=accion.action">

con esto, ese accion carga la lista y te lleva a resultado.jsp mostrandose correctamente los resultados.

Saludos!
  #9 (permalink)  
Antiguo 27/08/2010, 12:02
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Cita:
Iniciado por hualro Ver Mensaje
Es muy sencillo tu error, no es problema del tag o algo así.

tu index.jsp contiene un meta tag para redirigir a un action que no está mapeado en ninguna parte de tu struts.xml. Por lo tanto, tu lista de paises no se crea nunca.

Para solucionarlo necesitas declarar ese action en struts e inicializar tu arrayList y regresar al resultado.

O, lo que yo hice fue cambiar ese tag por el accion que ya tenías y que inicializa tu list.

antes:
Código HTML:
Ver original
  1. <META HTTP-EQUIV="Refresh" CONTENT="0;URL=populateRegister.action">

despues:
Código HTML:
Ver original
  1. <META HTTP-EQUIV="Refresh" CONTENT="0;URL=accion.action">

con esto, ese accion carga la lista y te lleva a resultado.jsp mostrandose correctamente los resultados.

Saludos!


Hola compañero.

Acabo de probar lo que me has recomendado, cambiando dichas etiquetas... pero nada.

Es más... me salta un warning: "invalid location of TAG(META)" , como si no encontrase la accion.

Que otro modo hay??, como inicializo mi array en struts2?¿?¿?

Saludos.
  #10 (permalink)  
Antiguo 27/08/2010, 12:18
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: [Problema] - Struts2 + <s:select ...

En tu struts.xml quita el method property de tu accion

antes:
Código XML:
Ver original
  1. <action name="accion" method="{1}" class="vaannila.accion">

despues:
Código XML:
Ver original
  1. <action name="accion" class="vaannila.accion">
  #11 (permalink)  
Antiguo 27/08/2010, 12:24
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Cita:
Iniciado por hualro Ver Mensaje
En tu struts.xml quita el method property de tu accion

antes:
Código XML:
Ver original
  1. <action name="accion" method="{1}" class="vaannila.accion">

despues:
Código XML:
Ver original
  1. <action name="accion" class="vaannila.accion">


1. En el index, he dejado puesto lo que comentas en tu anterior post.
2. Ahora en mi xml, quito el "method".


Pero sigue dando error amigo.


Por cierto, en el Struts.xml, no tengo muy claro ... cuando he de poner "success" ó cuando "input" en las distintas etiquetas "name"...

Sabrias decirme cuando he de poner tal cosa?¿

Ejem:
Código XML:
Ver original
  1. <action name="Accion"  class="vaannila.Accion">
  2. <result name="success">resultado.jsp</result>
  3. </action>

Ahi como puedes oberservar, he puesto success asociado al "resultado.jsp".... pero lo pongo por pura dinamica...
  #12 (permalink)  
Antiguo 27/08/2010, 12:52
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: [Problema] - Struts2 + <s:select ...

Varias cosas, efectivamente lo de method tienes que eliminarlo. Las acciones siempre pasarán por el execute (si existe), pero puedes hacer que se ejecute otro método más indicándolo con el method. En tu caso, estás llamando a un método que no existe.

Aparte de eso, estás tratando de leer una una lista que todavía no has creado. Tu action se ejecuta desde la página que pretendes que muestre el combo, por lo que cuando entras por primera vez, el listado es nulo, y si llegara a crearla, ya no la verías porque después de llenarla te dirige a resultado.jsp.

Por último, los valores "success", "input"... sirven para direccionar la página que va a ser mostrada después de la action. Success es el que se usa por defecto para cuando todo ha ido bien, e input cuando ha habido un error.

Vamos, que estás bastante verde, deberías repasar un poco qué es una action y como se utilizan.
  #13 (permalink)  
Antiguo 27/08/2010, 13:05
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: [Problema] - Struts2 + <s:select ...

Deja importarte el proyecto que yo tengo como un war y te mando el proyecto con todo y eclipse para que lo cheques.

Veo que en tu struts definiste el action como "Accion" con mayúsculas tal vez tengas todo correcto pero puede que sea eso.

No necesitas poner el name = "success" ya que por default se crea el result name success si es que no lo defines con ese nombre.

El input tiene un uso específico, y es para las validaciones. cuando ocurre un error de validación se usa un path a donde se manda el error y donde probablemente sea donde lo vas a corregir. es decir:

Tu tienes login.jsp donde tienes un formulario y un action digamos loginAction.

ese loginAction si tiene errores lo regresas al input "login.jsp" para que el usuario corriga los errores e intente de nuevo.
  #14 (permalink)  
Antiguo 27/08/2010, 13:06
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Cita:
Iniciado por Xerelo Ver Mensaje
Varias cosas, efectivamente lo de method tienes que eliminarlo. Las acciones siempre pasarán por el execute (si existe), pero puedes hacer que se ejecute otro método más indicándolo con el method. En tu caso, estás llamando a un método que no existe.

Aparte de eso, estás tratando de leer una una lista que todavía no has creado. Tu action se ejecuta desde la página que pretendes que muestre el combo, por lo que cuando entras por primera vez, el listado es nulo, y si llegara a crearla, ya no la verías porque después de llenarla te dirige a resultado.jsp.

Por último, los valores "success", "input"... sirven para direccionar la página que va a ser mostrada después de la action. Success es el que se usa por defecto para cuando todo ha ido bien, e input cuando ha habido un error.

Vamos, que estás bastante verde, deberías repasar un poco qué es una action y como se utilizan.
Los conceptos básicos los tengo.
Pero la solución para que ese listado no sea nulo, cual es??. He probado lo que han posteado , pero no funciona.


Y por cierto, para cargar una lista de paises extensa???. He de escribirlos todos uno por uno...??
  #15 (permalink)  
Antiguo 27/08/2010, 13:14
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: [Problema] - Struts2 + <s:select ...

Aquí está el war con el source: http://www.box.net/shared/kt7934qri3
  #16 (permalink)  
Antiguo 27/08/2010, 13:17
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Cita:
Iniciado por hualro Ver Mensaje
Aquí está el war con el source: [url]http://www.box.net/shared/kt7934qri3[/url]
Gracias!

Bajandolo estoy. Aver si lo soluciono
  #17 (permalink)  
Antiguo 27/08/2010, 13:19
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Ni siquiera miré el codigo...

Tan solo lo he cargado y ejecutado en servidor y....

Cita:
type Informe de Excepción

mensaje

descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.

excepción

org.apache.jasper.JasperException: tag 'select', field 'list', name 'country': The requested list key 'countryList' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:527)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.struts2.dispatcher.ng.filter.StrutsPrep areAndExecuteFilter.doFilter(StrutsPrepareAndExecu teFilter.java:73)


causa raíz

tag 'select', field 'list', name 'country': The requested list key 'countryList' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
org.apache.struts2.components.Component.fieldError (Component.java:230)
org.apache.struts2.components.Component.findValue( Component.java:351)
org.apache.struts2.components.ListUIBean.evaluateE xtraParams(ListUIBean.java:80)
org.apache.struts2.components.Select.evaluateExtra Params(Select.java:105)
org.apache.struts2.components.UIBean.evaluateParam s(UIBean.java:856)
org.apache.struts2.components.UIBean.end(UIBean.ja va:510)
org.apache.struts2.views.jsp.ComponentTagSupport.d oEndTag(ComponentTagSupport.java:42)
org.apache.jsp.resultado_jsp._jspx_meth_s_005fsele ct_005f0(resultado_jsp.java:162)
org.apache.jsp.resultado_jsp._jspx_meth_s_005fform _005f0(resultado_jsp.java:117)
org.apache.jsp.resultado_jsp._jspService(resultado _jsp.java:77)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.struts2.dispatcher.ng.filter.StrutsPrep areAndExecuteFilter.doFilter(StrutsPrepareAndExecu teFilter.java:73)


nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/6.0.29.
  #18 (permalink)  
Antiguo 27/08/2010, 13:23
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Una posible solución que he encontrado es....


Código XML:
Ver original
  1. <s:form action="accion">
  2.  
  3.  
  4.      
  5.     <s:select name="country" list="{'España','USA','Francia','Alemania'}" headerKey="0" headerValue="Country"
  6.         label="Select a country" />
  7.                
  8.        
  9.  
  10.             <s:submit value="Enviar"/>


Es decir, la lista ya viene inicializada desde la propia vista "resultado.jsp" y el correspondiente "action" pues captura bien los paises.


Hasta ahí, todo ok. El problema viene, cuando en vez de escribir esa lista de 3 paises.... escribo una lista con todos los paises del mundo....



Es como si se sobrecargase. Vamos, que falla totalmente dando error.

http://es.wikipedia.org/wiki/Anexo:Pa%C3%ADses_del_mundo
  #19 (permalink)  
Antiguo 27/08/2010, 13:48
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: [Problema] - Struts2 + <s:select ...

Pues qué traes que no te jala? jajajajaja

jajajaja lo he verificado yo mismo y me funciona a la perfección probablemente necesites remover el cache de tomcat elimina el contenido de work y de temp y la carpeta de webapps y haz un deploy fresco talvez no te esté tomando la versión que te mandé.
  #20 (permalink)  
Antiguo 27/08/2010, 13:53
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: [Problema] - Struts2 + <s:select ...

Te la voy a poner fácil nomás porque ya me caíste bien por intentar tantas veces jajajajaja
Voy a hacer un proyecto desde cero con Struts y que carge con Ajax los países y los despliegue en un select qué te parece? jajaja será mi tarea del fin de semana para distraerme un rato!

La lista de los países es fácil, se puede definir como una lista JSON, y no es pesado cargarla y así no necesitas un backend como traer los registros de la BD o de un Web Service.

Última edición por hualro; 27/08/2010 a las 13:59
  #21 (permalink)  
Antiguo 27/08/2010, 14:02
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Cita:
Iniciado por hualro Ver Mensaje
Te la voy a poner fácil nomás porque ya me caíste bien por intentar tantas veces jajajajaja
Voy a hacer un proyecto desde cero con Struts y que carge con Ajax los países y los despliegue en un select qué te parece? jajaja será mi tarea del fin de semana para distraerme un rato!

JAjaj, no hombre, no hace falta que te molestes.

Por cierto, mi proyecto web, consiste en una web de subtitulos y tal.

Y ahora ando con el tema de la subida del subtitulo...

Bien, pues la cosa es, que una vez que lo he conseguido subir al servidor. He de poner una caja de texto (textarea) para que capture lo que sea y despues en el action tratarlo....

pues estoy probando a ver si de verdad captura algo...y cuando en el action hago un System.out.println... me sale "null".


Código XML:
Ver original
  1. <s:form action="UploadSubtitleAction" method="post" enctype="multipart/form-data">
  2.             <s:file name="userImage" label="Subtitle to upload" />
  3.              <s:textarea label="Comentarios" name="comment" cols="40" rows="10"  />
  4.            
  5.            
  6.             <s:submit value="Upload" align="center" />
  7.         </s:form>


name = "comment"


Action pertinente...

Código C++:
Ver original
  1. public class UploadSubtitleAction extends ActionSupport implements ServletRequestAware {
  2.  
  3.     private static final long serialVersionUID = 1L;
  4.     private File userImage;
  5.     private String userImageContentType;
  6.     private String userImageFileName;
  7.     private HttpServletRequest servletRequest;
  8.     private List<String> episodesdescr;
  9.     [B]private String comment;[/B]
  10.    
  11.     @SuppressWarnings("unchecked")
  12.     public UploadSubtitleAction()  {
  13.        
  14.         Wikisubtitle wiki = new Wikisubtitle();
  15.         episodesdescr = wiki.getAllEpisodesDescription();  
  16.     }
  17.    
  18.     @SuppressWarnings("deprecation")
  19.     public String execute() {
  20.        
  21.         try {
  22.             System.out.println("Saco por pantalla lo captura en comentario!!!!!!!!!!!!!!!!!!!!!!!: "+comment);
  23.            
  24.             System.out.println("UploadSubtitleAction.execute()");
  25.             String filePath = servletRequest.getRealPath("/");
  26.             System.out.println("Server path: " + filePath);
  27.             File fileToCreate = new File(filePath, this.userImageFileName);
  28.             System.out.println("Ruta : " + fileToCreate.toString());
  29.             Wikisubtitle wiki = new Wikisubtitle();
  30.             FileUtils.copyFile(this.userImage, fileToCreate);
  31.             wiki.parseSubtitle(fileToCreate);
  32.         }
  33.         catch (Exception e) {
  34.             e.printStackTrace();
  35.             addActionError(e.getMessage());
  36.             return INPUT;
  37.         }
  38.         return SUCCESS;
  39.     }
  40.  
  41.    
  42.     public String getComment()
  43.     {
  44.         return comment;
  45.     }
  46.    
  47.     public void SetComment(String comment)
  48.     {
  49.        this.comment = comment; 
  50.     }
  51.  
  52. ....


Pues como ya te cuento, no captúra el comentario... vamos que no se autorrellena... esa propiedad "mágica" que tiene struts2 parace que no se aplica aqui...

Te importaria decirme de que pudiese ser????
  #22 (permalink)  
Antiguo 27/08/2010, 14:13
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: [Problema] - Struts2 + <s:select ...

Error: Línea 47 del Action que pusiste arriba (UploadSubtitleAction).

Has definido un setter para el comment, pero me imagino que tienes un error de dedo porque inicias el método con mayúscula, por lo que es como si el setter para tu propiedad comment no existiera, recuerda que Java es case sensitive.

jajaja y la propiedad mágica no es tan mágica, hay un Interceptor que hace el mapping de tus parámetros que mandas con los atributos de tu Action. :)

Y se me acaba de ocurrir algo mejor!

Qué te parece si en lugar de seleccionar un país, mejor que sea un textfield autocomplete! mucho más bonito jajaja y no es molestia está en dos patadas!


Saludos
  #23 (permalink)  
Antiguo 27/08/2010, 14:30
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Cita:
Iniciado por hualro Ver Mensaje
Error: Línea 47 del Action que pusiste arriba (UploadSubtitleAction).

Has definido un setter para el comment, pero me imagino que tienes un error de dedo porque inicias el método con mayúscula, por lo que es como si el setter para tu propiedad comment no existiera, recuerda que Java es case sensitive.

jajaja y la propiedad mágica no es tan mágica, hay un Interceptor que hace el mapping de tus parámetros que mandas con los atributos de tu Action. :)

Y se me acaba de ocurrir algo mejor!

Qué te parece si en lugar de seleccionar un país, mejor que sea un textfield autocomplete! mucho más bonito jajaja y no es molestia está en dos patadas!


Saludos

Efectivamente!, los get y set, siempre minusculas!!!!!!


Muchas gracias, de verdad!.

textfield autocomplete??? jajaj, pero la gracia estaba en visualizar un listado...etc
  #24 (permalink)  
Antiguo 27/08/2010, 14:36
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: [Problema] - Struts2 + <s:select ...

Bueno en los dos jajajaajaja
  #25 (permalink)  
Antiguo 27/08/2010, 14:58
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

En fin tio, muchas gracias por la ayuda prestada.
  #26 (permalink)  
Antiguo 27/08/2010, 16:53
 
Fecha de Ingreso: agosto-2010
Mensajes: 21
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: [Problema] - Struts2 + <s:select ...

Por cierto,

Es posible capturar un valor de sesion para que vaya a parar a un action??

Código XML:
Ver original
  1. <s:property value="#session.username" />

En este caso, session.username... muestra eso... un String... y me gustaria capturar ese valor..
  #27 (permalink)  
Antiguo 28/08/2010, 18:06
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: [Problema] - Struts2 + <s:select ...

Como siempre cumplo lo que prometo, bueno casi jejeje aquí está el ejemplo.

http://www.box.net/shared/x8xa63o97i

Saludos!

Etiquetas: struts
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:13.