У меня есть домашняя страница, которая перенаправляет на страницу обновления, когда пользователь щелкает, чтобы обновить элемент.
Я пытаюсь передать значение идентификатора на страницу обновления в зависимости от элемента, на который нажал пользователь, однако я не могу заполнить текстовые поля.
Не могли бы вы помочь мне? Интересно, где моя логика не работает?
Обновление SQL:
public static void insertProduct(Product product)
{
Connection connection = Database.getConnection();
String sql = "INSERT INTO product (name, type, price) VALUES (?, ?, ?)";
try {
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, product.getName());
statement.setString(2, product.getType());
statement.setDouble(3, product.getPrice());
statement.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}
Контроллер:
private ProductService productService = new ProductService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
// request.setAttribute("products", productService.getProducts());
request.getRequestDispatcher("/WEB-INF/views/home.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
double price = Double.parseDouble(request.getParameter("price"));
// Product newProduct = new Product (название, цена);
request.setAttribute("products", productService.getProducts());
request.getRequestDispatcher("/WEB-INF/views/home.jsp").forward(request, response);
}
HTML Домашняя страница:
<tr>
<th>Name</th>
<th>Price</th>
<th>Type</th>
</tr>
<c:forEach var="product" items="${products}">
<tr>
<td><c:out value="${product.name}" /></td>
<td><c:out value="${product.priceAsCurrency}" /></td>
<td><c:out value="${product.type}" /></td>
<td>
<a href="/updateItem?id=<c:out value='${product.id}' />">Edit</a>
<a href="/delete?id=<c:out value='${product.id}' />">Delete</a>
</td>
</tr>
<input id="productId" name="productId" type="hidden" value="${product.id}">
</c:forEach>
Страница обновления:
<form action="updateItem" method="post">
<table border="1" cellpadding="5">
<input type="hidden" name="id" value="<c:out value='${product.id}'
/>" />
<tr>
<th>Name: </th>
<td>
<input type="text" name="name" size="45"
value="${product.name}"/>"
/>
</td>
</tr>
<tr>
<th>Type: </th>
<td>
<input type="text" name="type" size="45"
value="${product.type}"/>"
/>
</td>
</tr>
<tr>
<th>Price: </th>
<td>
<input type="text" name="type" size="45"
value="${product.price}"/>"
/>
</td>
</tr>
</table>
<button type="submit" value="submit">Update</button>
</form>
Для обновления все поля не должны быть пустыми в соответствии с требованиями базы данных, поэтому я бы хотел, чтобы они также заполнялись текущими данными.
Заранее спасибо.