【问题标题】:Need ArrayList printed without "Brackets"需要打印不带“括号”的 ArrayList
【发布时间】:2011-10-12 14:09:48
【问题描述】:

大家好,我有一个数组列表在 jsp 上显示为 [MCA, MCB, COMM, DMISA]

我在 jsp 上调用它:

<td>${bean.CodesNames}</td>

在 bean 中,getter 是:

public void setCodesNames(ArrayList<String> CodesNames)
{
    this.CodesNames = CodesNames;
}

如何在没有括号的情况下显示它?

【问题讨论】:

  • 你显示的代码实际上是setter,而不是getter。

标签: java jsp arraylist jsp-tags


【解决方案1】:

你得到括号是因为 ArrayList#toString() 被隐式调用,以便将列表转换为可打印的字符串。您可以通过在 JSP 中自己打印列表来解决此问题:

<c:forEach items="${CodesNames}" var="item" varStatus="status">
    ${item}<c:if test="${!status.last}">,</c:if>
</c:forEach>

或者用一个 bean getter 比返回一个字符串:

public String getCodesNamesAsString()
{
    // using a Guava Joiner
    return Joiner.on(",").useForNull("null").join(getCodesNames());
}

(如果您不熟悉 Guava,请参阅 Joiner JavaDocs。)

【讨论】:

  • 在 jsp 上进行迭代非常快速......谢谢!
【解决方案2】:

添加另一个 getter 方法:

public void getCodesNamesFormatted()
{
  StringBuilder sb = new StringBuilder();
  for (String codeName : CodesNames) sb.append(codeName).append(',');
  return sb.deleteCharAt(sb.length());
}

并从 JSP 中调用它:

<td>${bean.codesNamesFormatted}</td>

【讨论】:

    【解决方案3】:

    这个字符串 ([MCA, MCB, COMM, DMISA]) 是由 Array 类的 toString() 方法生成的。 您需要创建自己的代码,该代码将遍历数组元素并逐个打印它们。 或者当然你可以使用脏的replaceAll方式。两种方式见下面的代码:

    1)

    <% for( String arrayItem : myArray ) { %>
    <%= arrayItem %>,
    <%}%>
    

    2)

    <%=myArray.toString().replaceAll("\[|\]","")%>
    

    【讨论】:

    【解决方案4】:

    你可以实现 getter 来生成你需要的格式

    public String getCodesNamesFormatted()
    {
        // format as you like
    }
    

    那就用吧

    <td>${bean.codesNamesFormatted}</td>
    

    【讨论】:

      【解决方案5】:

      你需要迭代它。不要依赖toString

      <td>
          <c:forEach var="name" varStatus="stat" items="${bean.codesNames}">
              <c:out value="${name}"/>
              <c:if test="${stat.index < fn:length(bean.codesNames) - 1}">
                  <c:out value=","/>
              </c:if>
          </c:forEach>
      </td>
      

      PS:&lt;c:out/&gt; 在这里是可选的。

      【讨论】:

      • 你不需要&lt;c:out/&gt;只是一个逗号。
      • 是的,我知道。只是为了清楚起见而添加它。
      猜你喜欢
      • 2014-07-31
      • 2015-11-14
      • 2021-11-16
      • 2019-02-23
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2022-10-13
      相关资源
      最近更新 更多