需要没有“Brackets”打印的ArrayList

时间:2011-07-25 12:59:53

标签: java jsp arraylist jsp-tags

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

我在jsp上调用它:

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

在豆中,吸气剂是:

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

如何在没有括号的情况下显示此内容?

5 个答案:

答案 0 :(得分:6)

您可以隐式调用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());
}

(如果您不熟悉番石榴,请参阅Joiner JavaDocs。)

答案 1 :(得分: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>

答案 2 :(得分:1)

你需要迭代它。不要依赖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:此处<c:out/>是可选的。

答案 3 :(得分:1)

您可以实现使您需要格式化的getter

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

然后使用它

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

答案 4 :(得分:1)

此字符串([MCA,MCB,COMM,DMISA])由类Array的方法toString()生成。 您需要创建自己的代码,它将迭代数组元素并逐个打印它们。 或者你当然可以使用脏方式替换所有。请参阅以下代码,了解两种方式:

1)

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

2)

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