java - 未填写所有 Spring 表单字段并收到错误请求错误 400

标签 java spring hibernate spring-mvc jstl

我有这个 hibernate 模型:

@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>

以及这个 Controller 方法:

@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:/");
}

我在 Controller 和 Spring 表单完成的其他字段中设置了我的 creationDate 。 我怀疑未在表单中设置 creationDate 导致表单提交时出现错误请求错误。

我应该怎样做才能避免这个错误?

最佳答案

看起来与Spring MVC Error: Failed to convert property value of type java.lang.String to required type有同样的问题。

<form:select>只提交一个字符串值,您告诉 Spring 将其放入 PostCategory 中对象。

尝试告诉它将该值放入 category子对象的id字段:

<form:select path="category.id">

关于java - 未填写所有 Spring 表单字段并收到错误请求错误 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50492543/

相关文章:

spring - 使用@Value 将属性注入(inject)抽象类

java - 主表中没有列的 Hibernate 映射

java - 如何使用 java 8 流创建多个新的 Hashmap?

java - StaggeredGridLayoutManager 中的 NullPointerException

java - 仅更新键/值属性文件中的键?

java - 对获取使用 Servlet 写入文本文件的路径感到困惑

java - Spring MVC 应用程序中的多个 ScriptTemplateViewResolvers

java - Spring MVC 自定义事件扩展了 ApplicationEvent 调用两次

database - Grails 自动约束更新

java - JPA 在创建后返回嵌套对象 - 500 内部服务器错误