consulta spring mvc tag form:option genera error jsp

235 views
Skip to first unread message

Edson Chavez

unread,
Dec 15, 2008, 2:10:47 PM12/15/08
to spring-user...@googlegroups.com
Hola a todos he buscado informacion en lña web y no he encontrado que a nadie le suceda este error, estoy usando spring mvc y todo va muy bien sin embargo tengo problemas cuando uso el tag form:option dentro del tag form:select esto tambien sucede copn el tag form:options

inicialmente el tag options hacia referencia a una lista de objetos departamento que hay en el comand pero quise ver si el problema era justamnte algun parseo en la lista y lo deje con elementos estaticos aqui el codigo jsp:

<form:select path="departamento" id="cmbDepartamento"
                        <form:option value="-" label="seleccione uno"/>
</form:select>

tengo dudas sobre las propiedades path en mi caso departamento puede ser un objeto que compone la lista que se dara como items en un tag options? y segundo el tag options puede recibir como origen cualquier objeto que pertenezca a una clase que implementa la interface List?

volviendo al tema: entonces cuando quiero ver la pagina web obtengo un codigo de error 500 con el mensaje   [Servlet Error]-[/WEB-INF/jsp/registraSolicitud.jsp]: com.ibm.ws.jsp.JspCoreException: /WEB-INF/jsp/registraSolicitud.jsp(69,7) JSPG0060E: Sintaxis jsp no válida []

use como referencia la pagina de spring donde se definen los tags:http://static.springframework.org/spring/docs/2.0.x/reference/mvc.html

el servidor de aplicaciones es was 6.1,

la linea 69 que se menciona en el error es la que contiene <form:option value="-" label="seleccione uno"/>

aqui el trace del error
[15/12/08 13:57:12:718 COT] 0000003e WebApp        E   [Servlet Error]-[/WEB-INF/jsp/registraSolicitud.jsp]: com.ibm.ws.jsp.JspCoreException: /WEB-INF/jsp/registraSolicitud.jsp(69,7) JSPG0060E: Sintaxis jsp no válida []
    at com.ibm.ws.jsp.translator.document.Jsp2Dom.getJspDocumentAsJspPage(Jsp2Dom.java:290)
    at com.ibm.ws.jsp.translator.document.Jsp2Dom.getJspDocument(Jsp2Dom.java:170)
    at com.ibm.ws.jsp.translator.JspTranslator.<init>(JspTranslator.java:67)
    at com.ibm.ws.jsp.translator.JspTranslatorFactory.createTranslator(JspTranslatorFactory.java:112)
    at com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJsp(JspTranslatorUtil.java:180)
    at com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJspAndCompile(JspTranslatorUtil.java:83)
    at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.translateJsp(AbstractJSPExtensionServletWrapper.java:349)
    at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper._checkForTranslation(AbstractJSPExtensionServletWrapper.java:317)
    at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.checkForTranslation(AbstractJSPExtensionServletWrapper.java:226)
    at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:131)
    at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.handleRequest(AbstractJSPExtensionProcessor.java:270)
    at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:308)
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:240)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:258)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1174)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:901)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:966)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:463)
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3129)
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:238)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811)
    at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1433)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:93)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:394)
    at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:152)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:213)
    at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions(AbstractAsyncFuture.java:195)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:194)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:741)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:863)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1510)

--
saludos

Edson
http://www.sindominio.net/ayuda/preguntas-inteligentes.html
http://soyfreakytambiengeek.blogspot.com/ <-- Mi Blog ^^

Christian Gonzales Komiya

unread,
Dec 15, 2008, 2:43:44 PM12/15/08
to spring-user...@googlegroups.com
el path no es el arreglo sinó el value del combo que se seleccionará,
 
sería algo así:
 
En estos casos se envía los departamentos en el request. (propiedad setAttribute) y al final tienes el valor seleccionado dentro del command en el atributo "coDepartamento" (que es lo que debes necesitar )
 
Asumimos que departamentos es una Lista de objetos del tipo Departamento, el cual tiene atributos de código "coDepartamento" y descripción "deDepartamento" (label)
 
 
1) con <form:option
 
<form:select path="coDepartamento" id="coDepartemento"
                 <c:forEach items="${departamentos}" var="departamento">
                         <form:option value="${departamento.coDepartamento}" >
                          <c:out value="${departamento.coDepartamento}"/>
</form:select>
 
 
Pero mejor es usar <form:options> es más reducido y más entendible
2) con <form:options
<form:select path="coDepartamento" id="coDepartemento"
                      <form:options items="${departamentos}" itemValue="coDepartamento" itemLabel="deDepartamento"/>
 
</form:select>
 
 
en el formOptions no solo puedes enviar Lists, sino Maps también

Edson Chavez

unread,
Dec 15, 2008, 3:23:23 PM12/15/08
to spring-user...@googlegroups.com
Gracias a todos por las prontas respuestas ya puedo visualizar el
formulario aunque el combo aun no carga datos, he realizado la carga
en el metodo

formBackingObject()

la definicion de la pagina en el archivo xml es:

<property name="commandName" value="registraSolicitud" />
<property name="commandClass"
value="pe.gob.pj.sinoe.command.afiliacion.RegistraSolicitud" />


entonces en el controlador existe un atributo

RegistraSolicitud registraSolicitud

el cual se carga en el metodo formBackingObject() del controller

y por logs puedo ver que el objeto registraSolicitud si se carga con
la lista de departamentos pero no se por que el formulario no los
muestra.

justamente, he modificado un poco el codigo y esta asi;

el objeto registraSolicitud tiene los atributos

Ubigeo departamento; // el departamento que sera seleccionado
List<Ubigeo> departamentos; // la lista de departamentos en el combo

asi mismo la Clase Ubigeo cuenta con los atributos

int codUbigeo;
String nombre;

el codigo en el jsp que ya esta funcionando es:

<form:select path="departamento" id="cmbDepartamento">
<form:option value="-" label="Seleccionar"/>
<form:options items="${departamentos}"
itemValue="codUbigeo" itemLabel="nombre" />
</form:select>

ahora el problema es que ahora si se muestra el jsp pero el combo solo
muestra la opcion "Seleccionar" y no muestra la lista de
departamentos.

he puesto logs en el metodo formBackingObject() y me indican que si se
carga la lista de departamentos en el objeto registraSolicitud :s

me falta algun paso o me estoy perdiendo de algo? aqui copio el metodo
FormBackingObject()

protected Object formBackingObject(HttpServletRequest request) throws
Exception {
logger.debug("Inicializacion de form = Registro de Solicitud");
registraSolicitud = (RegistraSolicitud) super.formBackingObject(request);
logger.debug("llamada a service");
List<Ubigeo> departamentos=this.serviceUbigeo.getDepartamentos();
logger.debug("numero de Departamentos a colocar en el command= "+
departamentos.size());//aqui el log me indica los 24 departamentos

registraSolicitud.setDepartamentos(departamentos);
logger.debug("numero de Departamentos colocados= "+
registraSolicitud.getDepartamentos().size()); // aqui el log me vuelve
a indicar 24 departamentos
return registraSolicitud;
}

Saludos y Gracias anticipadas

Edson

El 15 de diciembre de 2008 14:43, Christian Gonzales Komiya
<christia...@gmail.com> escribió:
--

Christian Gonzales Komiya

unread,
Dec 15, 2008, 4:46:55 PM12/15/08
to spring-user...@googlegroups.com
public  registraSolicitud {
Ubigeo departamento = new Ubigeo();
........
...
}
 
Esto de hacerle new a Ubigeo, no me parece buena práctica pero es una salida rápida y te reduce código.
 
La lista de departamentos no la debes mandar por command sino por request
 
request.setAttribute("departamentos",serviceUbigeo.getDepartamentos());
 
luego en el jsp :
 
<form:select path="departamento.codUbigeo" id="cmbDepartamento">
                       <form:option value="-" label="Seleccionar"/>
                       <form:options items="${departamentos}"
itemValue="codUbigeo" itemLabel="nombre" />
                   </form:select>
 
Hasta ahí tienes el objeto Ubigeo solo con el Id, si quieres el todos los atributos de Ubigeo, tendrás que cargarlo con algún servicio.
 
Preferible no metas mucha lógica en el formBackingObject(), porque eso solo debe ser para obtener o inicializar tu command
 
 
Slds

Rooseve...@gmail.com

unread,
Dec 19, 2008, 3:07:34 AM12/19/08
to Spring User Group Peru
Entender por favor.....

<fieldset>
<legend><bean:message key="localizacion" /></legend>

<label for="provincia">
<span class="label"><bean:message key="provincia" />:</span>
<html:select property="provincia" styleId="provincia">
<html:options collection="listaProvincias"
labelName="provDesProvincia" labelProperty="provDesProvincia"
name="Provincia" property="provCodProvincia"/>
</html:select>
<html:messages id="err_provincia" property="provincia"><span
class="msg-error">&nbsp;*</span></html:messages>
</label>

<label for="fecha-notificacion">
<span class="label"><bean:message key="fechanotificacion" />:</
span>
<html:text property="fechaNotificacion" size="10" maxlength="10"
styleId="fechaNotificacion" onkeypress="return esNumeroFecha(event)"/
><a href="#" onclick="event.cancelBubble=true; lcs
(document.getElementById('fechaNotificacion'))"><img src="/smi/
imagenes/calendario.gif" alt="Calendario" /></a>
<html:messages id="err_fechanotificacion"
property="fechaNotificacion"><span class="msg-error">&nbsp;*</span></
html:messages>
</label>
</fieldset>







On 15 dic, 22:46, "Christian Gonzales Komiya"
<christian.kom...@gmail.com> wrote:
> public  registraSolicitud {
> Ubigeo departamento = new Ubigeo();
> ........
> ...
>
> }
>
> Esto de hacerle new a Ubigeo, no me parece buena práctica pero es una salida
> rápida y te reduce código.
>
> La lista de departamentos no la debes mandar por command sino por request
>
> request.setAttribute("departamentos",serviceUbigeo.getDepartamentos());
>
> luego en el jsp :
>
> <form:select path="departamento.codUbigeo" id="cmbDepartamento">
>                        <form:option value="-" label="Seleccionar"/>
>                        <form:options items="${departamentos}"
> itemValue="codUbigeo" itemLabel="nombre" />
>                    </form:select>
>
> Hasta ahí tienes el objeto Ubigeo solo con el Id, si quieres el todos los
> atributos de Ubigeo, tendrás que cargarlo con algún servicio.
>
> Preferible no metas mucha lógica en el formBackingObject(), porque eso solo
> debe ser para obtener o inicializar tu command
>
> Slds
>
> > <christian.kom...@gmail.com> escribió:
>
> > > el path no es el arreglo sinó el value del combo que se seleccionará,
>
> > > sería algo así:
>
> > > En estos casos se envía los departamentos en el request. (propiedad
> > setAttribute) y al final tienes el valor seleccionado dentro del command en
> > el atributo "coDepartamento" (que es lo que debes necesitar )
>
> > > Asumimos que departamentos es una Lista de objetos del tipo Departamento,
> > el cual tiene atributos de código "coDepartamento" y descripción
> > "deDepartamento" (label)
>
> > > 1) con <form:option
>
> > > <form:select path="coDepartamento" id="coDepartemento"
> > >                  <c:forEach items="${departamentos}" var="departamento">
> > >                          <form:option
> > value="${departamento.coDepartamento}" >
> > >                           <c:out value="${departamento.coDepartamento}"/>
> > > </form:select>
>
> > > Pero mejor es usar <form:options> es más reducido y más entendible
> > > 2) con <form:options
> > > <form:select path="coDepartamento" id="coDepartemento"
> > >                       <form:options items="${departamentos}"
> > itemValue="coDepartamento" itemLabel="deDepartamento"/>
>
> > > </form:select>
>
> > > en el formOptions no solo puedes enviar Lists, sino Maps también
>
> > > El 15 de diciembre de 2008 14:10, Edson Chavez <edsoncha...@gmail.com>
> > com.ibm.ws.jsp.translator.document.Jsp2Dom.getJspDocumentAsJspPage(Jsp2Dom.­java:290)
> > >>     at
> > com.ibm.ws.jsp.translator.document.Jsp2Dom.getJspDocument(Jsp2Dom.java:170)
> > >>     at
> > com.ibm.ws.jsp.translator.JspTranslator.<init>(JspTranslator.java:67)
> > >>     at
> > com.ibm.ws.jsp.translator.JspTranslatorFactory.createTranslator(JspTranslat­orFactory.java:112)
> > >>     at
> > com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJsp(JspTranslato­rUtil.java:180)
> > >>     at
> > com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJspAndCompile(Js­pTranslatorUtil.java:83)
> > >>     at
> > com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.translate­Jsp(AbstractJSPExtensionServletWrapper.java:349)
> > >>     at
> > com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper._checkFor­Translation(AbstractJSPExtensionServletWrapper.java:317)
> > >>     at
> > com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.checkForT­ranslation(AbstractJSPExtensionServletWrapper.java:226)
> > >>     at
> > com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleReq­uest(AbstractJSPExtensionServletWrapper.java:131)
> > >>     at
> > com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.handleRequest(­AbstractJSPExtensionProcessor.java:270)
> > >>     at
> > com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppReques­tDispatcher.java:308)
> > >>     at
> > org.springframework.web.servlet.view.InternalResourceView.renderMergedOutpu­tModel(InternalResourceView.java:240)
> > >>     at
> > org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:­258)
> > >>     at
> > org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.­java:1174)
> > >>     at
> > org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServ­let.java:901)
> > >>     at
> > org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServl­et.java:809)
> > >>     at
> > org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkSe­rvlet.java:571)
> > >>     at
> > org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.jav­a:501)
> > >>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
> > >>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
> > >>     at
> > com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:­966)
> > >>     at
> > com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper­.java:478)
> > >>     at
> > com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapp­er.java:463)
> > >>     at
> > com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3129)
> > >>     at
> > com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:238)
> > >>     at
>
> ...
>
> leer más »- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -
Reply all
Reply to author
Forward
0 new messages