2013-09-11 5 views
3

Мне нужно динамически загружать раскрывающийся список, извлекая значения из базы данных. Используя сервлет в качестве контроллера для передачи списка массивов на страницу jsp. На странице jsp am с помощью jstl отображается список массивов, но значения не отображаются. Любая помощь будет оценена.Динамически загружать раскрывающийся список с помощью jstl

DAO:

//Method call to retrieve the customer names from Database   
public List<Report> getAllCustomers() { 

    List<Report> customers = new ArrayList<Report>(); 

    Connection conn = null; 

    Statement stmt = null; 

    ResultSet rs = null; 

    try { 



     prop = PropertyFileLoaderTon.getInstance() 
       .getPropertiesConfiguration(REPORTDATA_PROPERTY_FILE); 

     String tableName = prop.getString(REPORTS_TABLE); 

     String sql = "select distinct CUSTOMERNAME from tableName "; 


     conn = ConnectionFactory.getInstance().getConnection(); 


     stmt = conn.createStatement(); 

     rs = stmt.executeQuery(sql); 

     while (rs.next()) { 
      Report report = new Report(); 

      String customer = rs.getString("CUSTOMERNAME"); 

      report.setCustomerName(customer); 


      customers.add(report); 

     } 

    } catch (Exception e) { 

     e.printStackTrace(); 
    } finally { 

     try { 
      if (stmt != null) { 
       stmt.close(); 
       stmt = null; 
      } 
      if (conn != null) { 
       conn.close(); 
       conn = null; 
      } 
     } catch (Exception e) { 
     } 

    } 
    return customers; 
} 

Servlet:

protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 

    GenericDao genericDao = new GenericDao(); 

    List<Report> customers = genericDao.getAllCustomers(); 

    request.setAttribute("CustomerList", customers); 

    request.getRequestDispatcher("jsp/ShowReport.jsp").forward(request, 
      response); 

} 

JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

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


<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
     <title>Insert title here</title> 
    </head> 
    <body> 
    <form action="/ReportData/DisplayReport" method="post"> 

     Please select an element: 


     <select id="selectedRecord" name="selectedRecord"> 

      <c:forEach var="CustomerList" items="${CustomerList}"> 

       <option value="${CustomerList}">${CustomerList.customerName}</option> 

      </c:forEach> 

     </select> 

     <input type="submit" value="Submit" align="middle"> 

    </form> 

</body> 
</html> 

Be ап:

общественного класса Отчет {

private String customerName; 

public String getCustomerName() { 
    return customerName; 
} 

public void setCustomerName(String customerName) { 
    this.customerName = customerName; 
} 

}

+0

Я попытался изменить значение атрибута «var». Вместо отображения значений в списке массивов отображается только «$ {CustomerList.customerName}». содержимое, которое я дал внутри тега

+0

Я изменил var = «клиенты». после изменения этого также я получил тот же результат, о котором я упомянул в своем предыдущем комментарии – Mogana

ответ

2

код кажется правильным ... попробуйте изменить var="CustomerList" к каким-либо другим именем ...

Вопрос в том же имя может создать возникшей путём когда вы будете получать к нему доступ под кодом ${CustomerList.customerName}

попробуйте просто var = "клиенты"

затем ${customers.customerName}

+0

, вам нужно изменить CustomerList на новое имя, такое как customers.customerName CustomerList - это также имя атрибута запроса, который вы установили ....Наверное, это то, что дает конфликт. – AurA

1

я предполагаю, что это в основном из-за следующего:

< "значение опции =" {CustomerList} "{CustomerList.customerName}> $ < "вариант $ /">

вы можете захотеть установить

< "параметр значение =" $ {CustomerList.customerID} "> $ {CustomerList.customerName} <"/опция>

предположить, что это то, что вы хотите, или просто CUSTOMERNAME снова

-1

Установить его на ГЭТ отображение (вместо POST) и покажет там

Edit:

(на сервлет), метод doGET должен иметь его, то будет на вашем сайте, а затем с помощью метода поста можно восстановить значение.

Смежные вопросы