我的第二个迭代器有语法问题。我想迭代
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>
正确的语法是
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/>
中完全隐藏。
正确的语法是
equipesParties[%{#cpt.index}]
。