【问题标题】:What does "status" in <s:iterator> do?<s:iterator> 中的“状态”有什么作用?
【发布时间】:2014-12-02 06:59:42
【问题描述】:

我正在使用以下命令来显示来自 'userList' 的值

<s:iterator value="userList" status="rowStatus">
  <tr class="even"> 
    <td><s:property value="tweet_id" /></td>
    <td><s:property value="message" /></td>
    <td><s:property value="created" /></td>
  </tr>
</s:iterator>

这个命令中status="rowStatus"有什么用?

【问题讨论】:

    标签: jsp struts2 iterator


    【解决方案1】:

    来自docs

    迭代器标签可以导出一个 IteratorStatus 对象,这样就可以 获取有关迭代状态的信息,例如:

    index: current iteration index, starts on 0 and increments in one on every iteration
    count: iterations so far, starts on 1. count is always index + 1
    first: true if index == 0
    even: true if (index + 1) % 2 == 0
    last: true if current iteration is the last iteration
    odd: true if (index + 1) % 2 == 1
    

    例子

       <s:iterator status="rowStatus" value='{0, 1}'>
          Index: <s:property value="%{#rowStatus.index}" /> <br />
          Count: <s:property value="%{#rowStatus.count}" /> <br />  
       </s:iterator>
    

    将打印

      Index: 0
      Count: 1
      Index: 1
      Count: 2
    

    在您的用户列表中

    userList count = 1 to userList.size();
    userList index = 0 to userList.size() - 1;
    

    【讨论】:

      【解决方案2】:

      在你的情况下,没有。

      迭代时,当前对象被推到值栈的顶部。这意味着您只需使用其名称(以及the many other ways)即可访问它。

      您可以根据需要将此值用于value 属性。

      但是如果(在与您不同的情况下,但您肯定会很快遇到)您需要将此值放入表单字段中将提交回(其他)Action,定位 List&lt;YourObject&gt; 属性,那么您需要使用 IteratorStatus 安装正确的 name 属性。例如:

      源动作

      private List<User> sourceUserList; 
      

      目标动作

      private List<User> updatedUserList; 
      

      JSP

      <s:form action="targetAction">
        <s:iterator value="sourceUserList" status="rowStatus">
      
          <s:hidden name="updatedUserList[%{#rowStatus.index}].id" value="id"/>
          <s:property value="id" />
      
          <s:textfield name="updatedUserList[%{#rowStatus.index}].name" value="name" />
          <s:textfield name="updatedUserList[%{#rowStatus.index}].age"  value="age"  />
      
        </s:iterator>
        <s:submit/>
      </s:form>
      

      知道了吗?

      【讨论】:

      • 如果我们不知道姓名和年龄怎么办?我们如何展示所有这些?
      • 我不明白你在问什么:/
      • 我要求动态执行此操作。你硬编码了 .age 和 .name。
      猜你喜欢
      • 2018-03-22
      • 2018-10-03
      • 1970-01-01
      • 2015-03-10
      • 2011-07-12
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 2021-07-31
      相关资源
      最近更新 更多