Итак, я боролся за 2 дня, чтобы понять, в чем моя ошибка. Мой выпадающий список не заполняется данными из базы данных. Я использую Java EE и Mysql.
. Я могу без проблем вставить данные в базу данных, но когда я получаю их по какой-то причине, jsp не выполняет свою работу правильно, так что я всегда получайте выпадающий пустой. Вот таблица, которую я использую:
category_id int auto_increment,
name varchar(30),
primary key(category_id)
);
Rhis - это сервлет, который я использую, и метод для выполнения запроса. Как видите, я возвращаю список объектов, а затем добавляю его в качестве атрибута запроса в метод doGet. Так что я думаю, что пока здесь все не должно работать нормально.
public class DropDownServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
try {
List<Category> categories = retrieveCategories();
request.setAttribute("categories", categories);
RequestDispatcher view = request.getRequestDispatcher("viewdropdown.jsp");
view.forward(request, response);
} catch (ClassNotFoundException | SQLException | IOException ex) {
ex.printStackTrace();
}
}
public static List<Category> retrieveCategories() throws ClassNotFoundException, SQLException {
Connection conn = DatabaseConnection.initializeConnection();
String query = "Select * from category";
PreparedStatement pstmnt = conn.prepareStatement(query);
List<Category> categories = new ArrayList<>();
ResultSet rs = pstmnt.executeQuery();
while (rs.next()) {
int id = rs.getInt("category_id");
String name = rs.getString("name");
Category cat = new Category(id,name);
categories.add(cat);
}
conn.close();
return categories;
}
и вот jsp с выпадающим списком, который не отображает данные, которые он должен.
<html>
<head>
<title>Dropdown page</title>
</head>
<body>
<h1>The names of the categories are the following:</h1>
<select id ="dropdown">
<c:forEach items="${categories}" var="category">
<option value = "${category.name}">${category.name}</option>
</c:forEach>
</select>
<br>
<br>
</body>
</html>
РЕДАКТИРОВАТЬ Таким образом, я создал этот жестко закодированный метод тестирования для тестирования своего кода и добавляю его в качестве параметра запроса идентично тому, как я добавил другой метод с запросом к БД. Мой DropDown все еще пуст, поэтому проблема может быть в том, как я пытаюсь показать элементы в jsp. Я думаю, что это может быть в l oop у меня есть.
public static List<Category> testMethod(){
List<Category> list = new ArrayList<>();
Category one = new Category(1,"Blue");
Category two = new Category(2,"Red");
list.add(one);
list.add(two);
return list;
}