Struts2:更改起始迭代器值

时间:2012-04-03 19:07:26

标签: java jsp java-ee struts2 iterator

我正在创建一个菜单,对于每个菜单组件,我都有一个特定的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? (我不想丢失列表中的第一个值!)

如果我在任何地方感到困惑,请要求澄清。

谢谢!

2 个答案:

答案 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.