【问题标题】:JSP iterator syntax, iterator within anotherJSP迭代器语法,迭代器内另一个
【发布时间】:2013-06-17 22:09:57
【问题描述】:

我的第二个迭代器有语法问题。我想迭代 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


【解决方案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" 
/>

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

如果需要,将&lt;s:if&gt; 放在&lt;s:select/&gt; 之外以完全隐藏它。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-09-20
      • 2012-10-23
      • 2017-11-11
      • 2018-09-23
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2015-06-17
      • 2016-07-24
      相关资源
      最近更新 更多