Не заполнение всех полей формы Spring и получение ошибки запроса 400 - PullRequest
0 голосов
/ 23 мая 2018

У меня есть эта модель гибернации:

@Entity
@Table(name="BlogPost")
public class BlogPost implements Serializable {

  @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column
    private String title;

    @Column
    private String text;

    @Column(name="creation_date")
    private Date creationDate;

    @ManyToOne
    @JoinColumn(name = "cat_id")
    private PostCategory category;
}

и эта форма:

       <form:form action="saveBlogPost" method="post" modelAttribute="blogPost">
    <table>
        <form:hidden path="id"/>
        <tr>
            <td>Title:</td>
            <td><form:input path="title" /></td>
        </tr>
        <tr>
            <td>Text:</td>
            <td><form:input path="text"  /></td>
        </tr>
        <tr>
            <td>Category:</td>
            <td>
              <form:select path="category">
                 <c:forEach items="${allCats}" var="cat" >
                     <form:option value="${cat.id}">
                        ${cat.title}
                     </form:option>
                 </c:forEach>
              </form:select>
           </td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" value="Save"></td>
        </tr>
    </table>
    </form:form>

и этот метод контроллера:

@RequestMapping(value = "/saveBlogPost", method = RequestMethod.POST)
public ModelAndView saveEmployee(@ModelAttribute BlogPost blogPost) {
    if (blogPost.getId() == 0) { 
        blogPost.setCategory(postCategoryServiceImpl.getPostCategory(blogPost.getCategory().getId()));

        blogPost.setCreationDate(new Date());
        blogPostServiceImpl.addBlogPost(blogPost);
    } else {
        blogPostServiceImpl.updateBlogPost(blogPost);
    }
    return new ModelAndView("redirect:/");
}

Я установил creationDate в контроллере и других полях, выполненных формой Spring.Я подозреваю, что не установка creationDate в форме вызвала ошибку запроса на отправку формы.

Что я должен сделать, чтобы избежать этой ошибки?

1 Ответ

0 голосов
/ 23 мая 2018

Похоже на ту же проблему, что и Spring MVC Ошибка: не удалось преобразовать значение свойства типа java.lang.String в требуемый тип .

То есть <form:select> отправляет только одно строковое значение, которое вы говорите Spring для помещения в PostCategory объект.

Попробуйте сказать ему, чтобы оно было помещено в category Поле id подобъекта:

<form:select path="category.id">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...