2015-03-02 1 views
0

Я пытаюсь связать пользовательский ввод, используя аннотацию @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; 

} 

ответ

0

Я хотел бы предложить использовать Spring Form.

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<form:form method="POST" commandname="book" action="addBookExecution"> 
    <table> 
    <tr> 
    <td><form:label path="title">Enter Book's Name:</form:label></td> 
    <td><form:input path="title"></form:input></td> 
    </tr> 
    <form:select path="author" items="${authorList}" multiple="true"/> 
    -----similarly do for other html element 
</form:form> 
+0

Что я должен использовать для показа списка авторов и издателя? – Nisman

+0

только что обновил мой ответ за 1 поле выбора, сделайте это и для других. – RE350

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