2013-06-20 84 views
1

我的第二个迭代器有一个语法问题。我想迭代equipesParties的值,但是,我似乎无法找到正确的语法。JSP迭代器语法,另一个迭代器

这是造成问题的标签:value="{equipesParties[#cpt.count()]}"

<s:iterator value="equipes" var="equipe" id="equipe" status="cpt"> 
    <div style="height: 30px; vertical-align: middle;"> 
     <input type="checkbox" class="rEquipe" name="equipe" value="<s:property value='#equipe.id' />" id="equipe_<s:property value='#equipe.id' />" <s:if test='gallery.equipe.id == #equipe.id'>checked="checked"</s:if> /> 
     <label style="float: none; display: inline; padding-top: 0;" for="equipe_<s:property value='#equipe.id' />"><s:property value='#equipe.name' /></label> 

    </div> 

    <div id="galerie_partieBox" <s:if test='gallery == null || gallery.partie == null'>style="display: none;"</s:if> >  
     <select style="float: none; margin: 0 0 0 30px;" name="partie" id="select_partie"> 
     <s:if test='parties != null'> 
      <s:iterator value="{equipesParties[#cpt.count()]}" var="partie"> 
      <option <s:if test='#partie.id == gallery.partie.id'>selected="selected"</s:if> value="<s:property value='#partie.id' />"><s:property value="#partie.gameName" /></option> 
      </s:iterator> 
     </s:if> 
     </select> 
    </div> 
</s:iterator> 
+0

你有什么错误吗?或者它现在只按预期工作? – MaQy

+0

显示你的数据结构。 –

回答

1

正确的语法是equipesParties[%{#cpt.index}],但我会退后一秒告诉你,不需要使用迭代器来构建选择框。只需使用Struts2提供的选择标签即可。

你的(工作中)的代码(2个S:如果,2个S:属性,1次迭代)

<select style="float: none;margin: 0 0 0 30px;" name="partie" id="select_partie"> 
    <s:if test='parties != null'> 
     <s:iterator value="equipesParties[%{#cpt.index}]" var="partie"> 
      <option <s:if test='#partie.id == gallery.partie.id'> 
         selected="selected" 
        </s:if> 
        value="<s:property value='#partie.id' />"> 
       <s:property value="#partie.gameName" /> 
      </option> 
     </s:iterator> 
    </s:if> 
</select> 

可以通过这种简单的标签来代替,与相同结果

<s:select cssStyle = "float: none; margin: 0 0 0 30px;" 
      name  = "partie" 
      id  = "select_partie" 
      value  = "gallery.partie.id" 
      list  = "equipesParties[%{#cpt.index}]" 
      listKey = "id" 
      listValue = "gameName" 
/> 

我省略了你的<s:if test='parties != null'>,因为它是无效的;一个选择框必须至少有一个选项元素。

如果需要,将<s:if>置于<s:select/>之外以完全隐藏它。

+1

谢谢你,非常有帮助! – CharleyXIV

1

正确的语法是equipesParties[%{#cpt.index}]