Я пытаюсь связать пользовательский ввод, используя аннотацию @ModelAttribute
, когда пользователь хочет добавить новую книгу в базу данных (таблица книг). Класс книги имеет четыре свойства (int bookId, String title, Author author, Publisher publisher
). Пользователь просто вводит название, а затем выбирает автора и издателя из раскрывающихся списков. Когда форма отправляется, только название объекта возвращается к объекту модели в контроллере, а автор и издатель имеют значение null. Представляю форму и метод обработчика запросов ниже. Может кто-нибудь сказать, где проблема в моей форме или, может быть, в моем классе контроллера?Почему моя страница jsp отправляет null, когда я хочу связать ввод пользователя с помощью аннотации @ModelAttribute в моем контроллере?
addBook.jsp
<form action="addBookExecution" method="post">
<table>
<tr>
<td>Enter Book's Name:</td>
<td><input type="text" name="title"/></td>
</tr>
<tr>
<td>Select Author: </td>
<td><select name="author">
<option>****select author****</option>
<c:forEach var="author" items="${authorList}">
<option value="${author}">${author.authorName}</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>Select Publisher: </td>
<td><select name="publisher">
<option>****select publisher****</option>
<c:forEach var="publisher" items="${publisherList}">
<option value="${publisher}">${publisher.publisherName}</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>Click here to submit the form:</td>
<td><input type="submit" value="submit"/></td>
</tr>
Контроллер:
@RequestMapping(value = "/addBookExecution", method = RequestMethod.POST)
protected ModelAndView addBookExecution(@ModelAttribute Book book)
throws ClassNotFoundException, SQLException {
bookService.addBook(book);
ModelAndView model = new ModelAndView("adminFunctionsPage");
model.addObject("Msg","Your request has been processed successfully.");
return model;
}
Что я должен использовать для показа списка авторов и издателя? – Nisman
только что обновил мой ответ за 1 поле выбора, сделайте это и для других. – RE350