JSP 迭代器语法,另一个迭代器

问题描述 投票:0回答:2

我的第二个迭代器有语法问题。我想迭代

equipesParties
的值,但我似乎找不到正确的语法。

这是导致问题的标签:

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>
java jsp struts2 iterator ognl
2个回答
1
投票

正确的语法是

equipesParties[%{#cpt.index}]
,但我想退一步告诉您,无需使用迭代器来构建选择框。只需使用Struts2提供的Select Tag即可。

您的(现在正在运行)代码(2 s:if,2 s:property,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
投票

正确的语法是

equipesParties[%{#cpt.index}]

© www.soinside.com 2019 - 2024. All rights reserved.