Нужен ArrayList, напечатанный без "скобок" - PullRequest
1 голос
/ 25 июля 2011

Привет всем, у меня есть arraylist, показанный как [MCA, MCB, COMM, DMISA] на jsp.

Я звоню по jsp:

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

В бобе получатель:

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

Как я могу отобразить это без скобок?

Ответы [ 5 ]

6 голосов
/ 25 июля 2011

Вы получаете скобки, потому что ArrayList#toString() вызывается неявно, чтобы превратить список в печатную строку.Это можно исправить, напечатав список самостоятельно в JSP:

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

или с помощью средства получения бобов, которое возвращает строку:

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

(см. JoinerJavaDocs , если вы не знакомы с гуавой.)

2 голосов
/ 25 июля 2011

Добавить другой метод получения:

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>
1 голос
/ 25 июля 2011

Эта строка ([MCA, MCB, COMM, DMISA]) генерируется методом toString () класса Array. Вам нужно создать собственный код, который будет перебирать элементы массива и печатать их по одному. Или, конечно, вы можете использовать грязный способ заменить все. Смотрите код ниже для обоих способов:

1)

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

2)

<%=myArray.toString().replaceAll("\[|\]","")%>
1 голос
/ 25 июля 2011

Вы можете реализовать геттер, который делает нужное вам форматирование

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

Тогда используйте его

<td>${bean.codesNamesFormatted}</td>
1 голос
/ 25 июля 2011

Вы должны повторить это. Не полагайтесь на 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/> здесь необязательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...