【问题标题】:Use of logic:iterate with String array逻辑的使用:用字符串数组迭代
【发布时间】:2015-05-27 11:29:20
【问题描述】:

我正在使用 Struts,需要迭代字符串数组列表,即

List<String[]> list = new ArrayList<String[]>();

我正在使用此代码进行迭代

<logic:iterate  name="myForm" id="syncStringArrayId" property="list">
            <tr>            
                <td><bean:write name="syncStringArrayId"  /></td>
                <td>2nd column should be index 1 of string array</td>
                <td>3rd column should be index 2 of string array</td>
            </tr>
</logic:iterate> 

但是当我执行这段代码时,它会打印:

Column1                     Colmn2      Column3 
[Ljava.lang.String;@2803cc  Col2-Data   Col3-Data/value

表示它正在打印完整的字符串数组,但我无法打印字符串数组的索引。

谁能帮我找出我的错误。

编辑

如果这根本不可能,请告知,因为我可以使用一些 bean 来实现同样的目标

List<someBean> list = new ArrayList<someBean>();

我将保存在字符串数组中的数据我将保存在 bean 中,这将起作用。

【问题讨论】:

  • 使用索引从数组中检索值。
  • @AleksandrM 我也尝试过使用索引,但没有得到确切的想法,请您再解释一下。
  • 所以,你的实际问题是“我有一个 String[] 类型的属性,我想访问它的一个元素”。如果struts不支持只支持syncStringArrayId[0](不知道,很久没用了),用EL(代替&lt;bean:write..../&gt;,用${syncStringArrayId[0]}

标签: java arrays struts taglib


【解决方案1】:

您的 List 将字符串数组存储为对象,即 List list = new ArrayList();因此,当您遍历 List 时,它会为您提供 String[] ,它将包含许多元素,因为它是一个数组而不是单个元素,并且您将需要在其上再应用一个循环来打印来自 string[] 的值。 希望你明白我的意思。

【讨论】:

  • 不,不需要其他循环,因为我可以使用 index[0]、index[1] ... 等获取 String[] 的值,这不是我的问题
【解决方案2】:

看起来,您已经迭代了 List,但错过了迭代 String array

你能不能试试:

<table>
    <logic:iterate  name="myForm" id="syncStringArrayId" property="list" indexId="indexId">
    <tr>
        <td><bean:write name="indexId" /></td>
        <logic:iterate name="syncStringArrayId" id="strValue"> 
            <td><bean:write name="strValue" /></td>
        </logic:iterate>          
    </tr>
    </logic:iterate> 
</table>

【讨论】:

    【解决方案3】:

    这里的库解决了我的问题

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    

    我使用 forEach 循环像这样迭代列表。

    <c:forEach items="${myForm.list}" var="bean">
                <tr>
                    <td><c:out value="${bean[0]}" /></td>
                    <td><c:out value="${bean[2]}" /></td>
                    <td><c:out value="${bean[1]}" /></td>
                </tr>
            </c:forEach>
    

    希望这对某人有所帮助,谢谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      相关资源
      最近更新 更多