我正在创建一个菜单,对于每个菜单组件,我都有一个特定的ID:
<li id="ll1"><a href="javascript:{}" id="al1">Component</a></li>
从DB中检索组件,我使用iterator标签动态显示它们:
<s:iterator value="#session.loggedinUser.compNames" status="statusObject" var="parent">
<s:if test="#session.loggedinUser.compAccess[#statusObject.index] == 0">
<li id="ll<s:property value="#statusObject.index"/>">
<a href="javascript:{}" id="al<s:property value="#statusObject.index"/>" onclick="menuBar('none')">
<s:property value="#parent"/>
</a>
</li>
</s:if>
迭代器按我想要的方式工作,菜单列表生成完美。但是,它从List id = 0开始,如下:
<li id="ll0"><a href="javascript:{}" id="al0" onclick="menuBar('Component')">Component</a>
有没有办法在1处开始列表id赋值,同时保持迭代器列表的初始读取索引为0? (我不想丢失列表中的第一个值!)
如果我在任何地方感到困惑,请要求澄清。
谢谢!
答案 0 :(得分:1)
您的意思是<s:property value="#statusObject.index + 1"/>
而不是<s:property value="#statusObject.index"/>
如果是这种情况......您可能需要快速扫描http://commons.apache.org/ognl/language-guide.html。 Struts2使用OGNL作为EL,通常......如果你希望列表以不同的方式返回,那么在提交之前你需要使用JS来修改参数。
答案 1 :(得分:1)
避免不必要的计算。
<s:property value="#statusObject.count"/> index is 0-based.
<s:property value="#statusObject.index"/> count is 1-based.