Страница
Моя JSP дублирует запись, отображаемую на стороне клиента при обновлении. Я попробовал другой проект с тем же процессом, но он работает нормально. Вот скриншот страницы. Изображение
Вот мой код в приветственном файле (контроллер)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Todo> todos = null;
try {
todos = todoDaoImpl.getTodos();
request.setAttribute("todo_list", todos);
request.getRequestDispatcher("views/list-todo.jsp").forward(request, response);
} catch (Exception e) {
logger.warning("Error in list todo");
}
}
JSP код
<table class="table table-striped">
<caption>Your Todos are:</caption>
<tr>
<th id="desc">Description</th>
<th id="category">Category</th>
<th id="action">Action</th>
</tr>
<tbody>
<c:forEach items="${todo_list}" var="todo">
<tr>
<td>${todo.todos}</td>
<td>${todo.category}</td>
<td><a href="${loadTodoLink}" class="btn btn-primary">Update</a>
<a class="btn btn-danger" href="${deleteLink}" onclick="if(!(confirm('Do you want to delete this?'))) return false">Delete</a></td>
</tr>
</c:forEach>
</tbody>
</table>
Код DAO
List<Todo> todos = new ArrayList<>();
@Override
public List < Todo > getTodos() throws Exception {
String sql = "SELECT * from todo";
try (Connection conn = dataSource.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
int id = rs.getInt("id");
String todo = rs.getString("todo");
String category = rs.getString("category");
todos.add(new Todo(id, todo, category));
}
return todos;
}
}