问题描述:从数据库取出2个基本表数据,T1(a,b) T2(c,d,e)  
迭代输出T1中得b,且当T2.e=T1.a时,输出T2.dstruts2的迭代标签好像不支持嵌套,即使加了判断,也起不到作用。
<s:iterator value="#request.fMenus" status="stuts">          
      <li><a href=""><s:property value="fname"/></a>
      <s:set name="mfid" value="#request.fMenus.mfid"></s:set>      
          <ul>
              <s:iterator value="#request.sMenus">
              <s:set name="msfid" value="#request.sMenus.mfid"></s:set>
                  <s:if test="#mfid==#msfid"> 
                      <li><a href=""><s:property value="sname"/></a></li>                 
                  </s:if>
              </s:iterator>
          </ul>     
</s:iterator>
这段代码存在得问题是,判断没有起到任何作用。结果是外层迭代一次,内层所有输出一次,类似(1,123456)(2,123456)...
解决即刻给分!!!

解决方案 »

  1.   

    我记得set标签里面有个scope属性吧。如果不指定scope属性那默认的属性是什么?request?session?
    你设置一下scope=“request”再试试?
    其实你没有必要用工程处set标签.资源网_IT软件资源网_软件开发教程
      

  2.   

    scope默认值为request,不是这个问题。
      

  3.   

    可能是你的<s:set   name="msfid"   value="#request.sMenus.mfid"> </s:set> 有问题,是不是应该考虑从valueStack里取出当前的值呢,
    看改成<s:set   name="msfid"   value="mfid"> </s:set> 可不可以
      

  4.   

    Struts不支持嵌套.
    我曾经被强迫着做过这个东西,后来就是在action中,生成网页代码,在页面里面按照页面源文件输入到页面显示.
      

  5.   

    谁说Struts2不支持嵌套?Struts2当然支持iterator的嵌套。我觉得问题可能是这个:
    #request.fMenus是作为一个collection作为iterator的循环变量的,
    那么#request.fMenus.mfid的值是什么?<s:iterator value="#request.fMenus"  id="fmenu">                    
                <li> <a   href=""> <s:property   value="fname"/> </a>
                <s:set   name="mfid"   value="fmenu.mfid"> </s:set>            
                        <ul>
                                <s:iterator   value="#request.sMenus" id="smenu">
                                <s:set   name="msfid"   value="senus.mfid"> </s:set>
                                        <s:if   test="#mfid==#msfid">  
                                                <li> <a   href=""> <s:property   value="sname"/> </a> </li>                                  
                                        </s:if>
                                </s:iterator>
                        </ul>          
    </s:iterator> 
      

  6.   

    <s:iterator   value="fMenus"   status="stuts">                     
                <li> <a   href=""> <s:property   value="fname"/> </a>              
                        <ul> 
                                <s:iterator   value="sMenus" status="stuts2"> 
                                        <s:if   test="stuts.mfid==stuts2.msfid">   
                                                <li> <a   href=""> <s:property   value="stuts2.sname"/> </a> </li>                                   
                                        </s:if> 
                                </s:iterator> 
                        </ul>           
    </s:iterator> 试试。
      

  7.   

    <s:iterator value="#request.fMenus" status="stuts">         
          <li> <a href=""> ${fname} </a>
          <s:set name="mfid" value="#request.fMenus.mfid"/>     
              <ul>
                  <s:iterator value="#request.sMenus">
                  <s:set name="msfid" value="#request.sMenus.mfid"/>
                      <s:if test="${mfid}==${msfid}">
                          <li> <a href=""> ${sname} </a> </li>               
                      </s:if>
                  </s:iterator>
              </ul>   
    </s:iterator