需要打印不带“括号”的 ArrayList
Posted
技术标签:
【中文标题】需要打印不带“括号”的 ArrayList【英文标题】:Need ArrayList printed without "Brackets" 【发布时间】: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。 【参考方案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("\[|\]","")%>
【讨论】:
感谢兄弟的输入...我希望我可以在这项工作中使用脚本...大声笑 如果不是绝对必要,请不要使用 scriptlet。 ***.com/questions/3177733/…【参考方案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:<c:out/>
在这里是可选的。
【讨论】:
你不需要<c:out/>
只是一个逗号。
是的,我知道。只是为了清楚起见而添加它。以上是关于需要打印不带“括号”的 ArrayList的主要内容,如果未能解决你的问题,请参考以下文章