java - 未填写所有 Spring 表单字段并收到错误请求错误 400
问题描述
我有这个休眠模型:
@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
导致表单提交时出现错误的请求错误。
我应该怎么做才能避免这个错误?
解决方案
看起来与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">
推荐阅读
- javascript - 如何保证在使用 useState 添加之前调用重置
- r - 如何使用字符串组合创建数据框?
- windows - 如何通过 Powershell 脚本运行运行命令
- python-3.x - OSError: 找不到 lib c 或加载它的任何变体 []。更新后的macos
- html - 带有水平子菜单栏显示/隐藏的导航栏下拉菜单
- python - 如何获得两列日期之间的差异?(我需要工作日,即不包括周末)
- python - 将 HTML 与 Flask 一起使用时,CSS 仅部分呈现?
- groovy - 从 Spock 迁移到 2.0 和 Groovy 迁移到 3.0.7 之后,@Category 测试未执行
- javascript - 带有 http 302 的 JS 服务工作者和缓存存储 API - 如何缓存重定向?
- scala - scala中的平衡括号递归方法