Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/05/2011, 08:20
Jarkaos
 
Fecha de Ingreso: noviembre-2002
Ubicación: Suecia
Mensajes: 253
Antigüedad: 22 años
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.