Как добавить запятую в строку на странице JSP

0

Я хочу добавить запятую в строку, которая извлекается из базы данных.

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

вот мой код

<td>
    <% 
       sql2 = "SELECT empname FROM users WHERE job = ? ";
       ps2 = connection.prepareStatement(sql2);
       ps2.setString(1, jobname);
       rs2 = ps2.executeQuery();

         while (rs2.next()){ 
              String emp= rs2.getString("empname");
     %>                        
      <%=emp%> 

    <% } %>
</td>
Теги:
jsp

3 ответа

1
Лучший ответ

Вы можете создать на e ArrayList из empname

ArrayList<String> empList = new ArrayList<String>();
while (rs2.next())
{ 
   String emp= rs2.getString("empname");
   empList.add(emp);                  
}

Затем вы можете использовать JSTL isLast()

<c:forEach items="${empList}" var="empName" varStatus="loop">
   <c:out value="${empName}" />
   <c:if test="${!loop.last}">,</c:if>
</c:forEach>    

Вы можете использовать метод isLast() ResultSet но я бы рекомендовал вам не использовать скрипты в JSP
Как избежать Java-кода в JSP файлах?

Для работы с JSTL вам просто нужно поместить jstl-1.2.jar в /WEB-INF/lib
и в JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  

Обновить ответ на комментарий

он не печатает результат.

Скрипты представляют собой raw java, встроенные в код страницы, и если вы объявляете переменные в своих сценариях, они становятся локальными переменными, встроенными в страницу.

Напротив, JSTL полностью работает с облачными атрибутами, либо на странице, и в запросе, либо в области сеанса.
Итак, для использования ArrayList empList созданного в Scriptlets, вам нужно изменить код. см. этот ответ

<%
 ArrayList<String> empList = new ArrayList<String>();
 while (rs2.next())
 { 
   String emp= rs2.getString("empname");
   empList.add(emp);                  
 }
 pageContext.setAttribute("empList", empList);//pageContext is implicit object available
%>  

то вышеупомянутый код JSTL будет работать нормально.

Ссылки по теме

  • 0
    это не печатает результат.
  • 0
    @Sumit: Извините. Я забыл рассказать вам о JSTL нуждается в банке. Смотрите мой обновленный ответ. Смотрите мой обновленный пост. Это работает. Я проверил.
Показать ещё 1 комментарий
0

Вы можете использовать rs2.isLast(), чтобы проверить, если текущий ResultSet является последней записи и не добавлять , в этом случае. Это, однако, дорого, потому что драйвер JDBC будет выводить вперед одну строку, чтобы определить, является ли текущая строка последней строкой в наборе результатов.

0

Этого было бы достаточно.

<% 
   sql2 = "SELECT empname FROM users WHERE job = ? ";
   ps2 = connection.prepareStatement(sql2);
   ps2.setString(1, jobname);
   rs2 = ps2.executeQuery();
   boolean b = rs2.last();
    int numberOfRecords = 0;
   if(b){
   numberOfRecords = rs.getRow();
   System.out.println(numberOfRecords);
     }
rs = stmt.executeQuery(sql);
 while (rs.next()){ 
      if(numberOfRecords>1)
      {
      String emp= rs.getString("bank")+",";

      }
      else
      {

      String emp=rs.getString("bank");

      }
      numberOfRecords--;
 %>                        
  <%=emp%> 

<% } %>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню