2011-07-25 52 views
1

大家好我有一個在jsp上顯示爲[MCA, MCB, COMM, DMISA]的數組列表。需要ArrayList打印時沒有「方括號」

進出口調用它的JSP:

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

在豆獲取方法爲:

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

我怎樣才能去掉括號顯示這個?

+0

您顯示的代碼實際上是二傳手,而不是吸氣。 –

回答

6

您得到括號,因爲ArrayList#toString()被隱式調用,以便將列表變成可打印的字符串。您可以自己打印列表中JSP解決這個問題:

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

或用豆的getter比返回一個字符串:

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

(見Joiner JavaDocs如果你不熟悉的番石榴。 )

+0

在jsp上迭代的過程非常快捷,非常感謝! –

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/>在這裏是可選的。

+0

hmmmm ...讓我試試 –

+0

你不需要''只爲一個逗號。 –

+0

是的,我知道。爲了清楚起見,添加了它。 – adarshr

1

您可以實現吸氣劑會使格式化你需要

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

然後用它

<td>${bean.codesNamesFormatted}</td> 
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> 
+0

看起來不錯。要試一試 –

1

該字符串([MCA,MCB,COMM,DMISA])由類Array的toString()方法生成。 您需要創建自己的代碼,它將迭代數組元素並逐個打印它們。 或者當然你可以使用replaceAll的髒方式。對於這兩種方式請參見下面的代碼:

1)

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

2)

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

感謝輸入bro ...我希望我可以在這份工作中使用scriptlets ...大聲笑 –

+0

如果你不是絕對必須使用scriptlets。 http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files –