【问题标题】:Struts2: Changing the starting iterator valueStruts2:更改起始迭代器值
【发布时间】:2012-04-17 11:43:46
【问题描述】:

我正在创建一个菜单,并且对于每个菜单组件,我都有一个特定的 ID:

<li id="ll1"><a href="javascript:{}" id="al1">Component</a></li>

从数据库中检索组件,我使用迭代器标签动态显示它们:

<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>

有什么方法可以在将迭代器列表的初始读取索引保持在 0 的同时从 1 开始分配列表 ID? (我不想丢失列表中的第一个值!)

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

谢谢!

【问题讨论】:

    标签: java jsp jakarta-ee struts2 iterator


    【解决方案1】:

    避免不必要的计算。

        <s:property value="#statusObject.count"/> index is 0-based.
        <s:property value="#statusObject.index"/> count is 1-based.
    

    【讨论】:

      【解决方案2】:

      您的意思是 &lt;s:property value="#statusObject.index + 1"/&gt; 而不是 &lt;s:property value="#statusObject.index"/&gt; 如果是这种情况...您可能需要快速扫描一下 http://commons.apache.org/ognl/language-guide.html。 Struts2 使用 OGNL 作为 EL,通常...

      【讨论】:

      • 谢谢,效果很好!我不知道您可以简单地添加 +1。我虽然这样做会甩掉整个事情。我希望我有更多的选票给你,因为你刚刚让我免于尝试后端环形交叉路口解决方案。再次感谢!
      • 一些需要注意的事情:像在java中一样使用对象方法,甚至可以直接访问静态成员(需要更改struts2配置)。创建一个新对象,然后用它做一些事情,还有很多好事。你不能做的是,afaik 是迭代 POJO 属性(如果它提供了你希望提供迭代的接口之一,你可以这样做......)。因此,今天的主题是创建一个标签,该标签将创建一个包含此类属性的字符串列表,以便您可以在迭代器中使用该列表。
      猜你喜欢
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 2013-12-03
      相关资源
      最近更新 更多