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

Prolemas de iteracion al usar <s:form></s:form>

Estas en el tema de Prolemas de iteracion al usar <s:form></s:form> en el foro de Java en Foros del Web. Hola, Estoy aplicando algunos cambios esteticos a una pagina .jsp que utiliza Struts. En una de las paginas hay una iteracion que esta colocada dentro ...
  #1 (permalink)  
Antiguo 24/05/2011, 08:20
 
Fecha de Ingreso: noviembre-2002
Ubicación: Suecia
Mensajes: 253
Antigüedad: 21 años, 5 meses
Puntos: 2
Prolemas de iteracion al usar <s:form></s:form>

Hola,

Estoy aplicando algunos cambios esteticos a una pagina .jsp que utiliza Struts. En una de las paginas hay una iteracion que esta colocada dentro de un formulario (<s:form>). Esta iteracion genera tres elementos. Cada uno de estos elementos tienen un formulario propio (<s:form>). Ahora bien, por algun motivo que no entiendo IE lee el </s:form> del elemento generado por la iteracion como el </s:form> del <s:form> mas externo y eso hace que la iteracion termine como una ensalada.

Asi se ve el .jsp:

Código PHP:
<s:form action="login" name="rooms"> <%-- El formulario externo ---%>
        <
section id="left">
            <
s:iterator value="roomsList" status="counter">
                <
s:if test="#counter.count == 1 or #counter.count == 4 or #counter.count == 7 or #counter.count == 10">
                    <
div class="themeBoxGreen">
                        <
header>
                            <
h6><s:property value="roomName"/></h6>
                        </
header>
                        <
div class="opener">
                        <
a href="javascript:submitForm(<s:property value="roomId"/>);">
                            <
img alt="Picture" src="showPicAction.action?avitorPath=<s:property value="roomAvitor"/>"/>
                        </
a>
                        </
div>

                        <
div class="dialog" title="Rums Lösenord">
                        
                        <%-- 
El formulario del elemento  ---%>
                        <
s:form id="User" name="User" onsubmit="return true;" action="viewRoom" method="post">
                            <
p>
                                
L&ouml;senord<br />
                                <
s:password name="password"  theme="simple"/><br /><br />
                                
V&auml;lj tip konto<br /><br />
                                <
s:radio name="type" list="userTypes" cssStyle="margin-left: 10px; margin-right: 5px;"  theme="simple"/>
                            </
p><br />
                            <
s:hidden name="roomId" theme="simple"/>
                            <
s:hidden name="userId" theme="simple"/>
                            <
s:hidden name="submit" theme="simple"/>
                            <
s:hidden name="pass" theme="simple" value="1"/>
                            <
s:hidden name="currentTab" value="6"/>
                            <
div class="ui-corner-all">
                                <
s:submit name="submit" align="center" onclick="javascript:UserSubmitForm();" type="submit" value="Login"/>
                            </
div>
                        </
s:form>
                        <%-- 
El formulario del elemento termina ---%>
                      

                    </
div>
                    </
div>
                </
s:if>
            </
s:iterator>
        </
section>

        <
section id="middle">
           <
s:iterator value="roomsList" status="counter">
                <
s:if test="#counter.count == 2 or #counter.count == 5 or #counter.count == 8 or #counter.count == 11">
                    <
div class="themeBoxBlue opener">
                        <
header>
                            <
h6><s:property value="roomName"/></h6>
                        </
header>
                        <
a href="javascript:submitForm(<s:property value="roomId"/>);">
                            <
img alt="Picture" src="showPicAction.action?avitorPath=<s:property value="roomAvitor"/>"/>
                        </
a>
                    </
div>

                    <
div class="dialog" title="Rums Lösenord">

                        <%-- 
El formulario del elemento  ---%>
                        <
s:form id="User" name="User" onsubmit="return true;" action="viewRoom" method="post">
                            <
p>
                                
L&ouml;senord<br />
                                <
s:password name="password"  theme="simple"/><br /><br />
                                
V&auml;lj tip konto<br />
                                <
s:radio cssClass="brodWhite" name="type" list="userTypes"  theme="simple"/>
                            </
p><br />
                            <
s:hidden name="roomId" theme="simple"/>
                            <
s:hidden name="userId" theme="simple"/>
                            <
s:hidden name="submit" theme="simple"/>
                            <
s:hidden name="pass" theme="simple" value="1"/>
                            <
s:hidden name="currentTab" value="6"/>
                            <
div class="buttonLeft">
                                <
s:submit cssClass="button" name="submit" align="center" onclick="javascript:UserSubmitForm();" type="submit" value="Login"/>
                            </
div>
                        </
s:form>
                        <%-- 
El formulario del elemento  termina---%>

                    </
div>


                </
s:if>
            </
s:iterator
        </
section>
</
s:form> <%-- El formulario externo termina ---%> 
Mirando el codigo obtenido en FF o IE se ve asi:

Código PHP:
<form id="login"....>
         <
section id="left">
                 <
div class="themeBoxGreen">
                           <
header>
                           </
header>
                           <
div class="opener">
                           </
div>
                 </
div>
         </
section>
</
form>

<
section id="middle">
                 <
div class="themeBoxBlue">
                           <
header>
                           </
header>
                           <
div class="opener">
                           </
div>
                 </
div>
         </
section



He probado quitando el <s:form> que esta dentro de la iteracion y el problema desaparece.

Como puedo solucionar este problema?

Gracias de antemano por la ayuda.
  #2 (permalink)  
Antiguo 24/05/2011, 09:48
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Prolemas de iteracion al usar <s:form></s:form>

El problema que tienes no es de Struts, Java, JSP, etc ... es de HTML.
No puedes anidar formularios, lo cual significa que no puedes hacer:
Código HTML:
Ver original
  1. <form action="foo.jsp" method="post">
  2.   <form action="otro.jsp" method="post">
  3.   </form>
  4. </form>

Que de hecho no tiene sentido alguno.
Debes buscar otra forma de hacer lo que deseas.

¿Cual es el propósito de el formulario dentro de la iteración? Ya que no puedes hacer eso, debemos saber que deseas para darte una solucion o alternativa a tu inconveniente.

Etiquetas: iteracion, jsp-servlets
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 21:47.