[英]Not filling all Spring form fields and getting bad request error 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:/");
}
我在控制器和其他由Spring表單完成的字段中設置了creationDate
。 我懷疑未在表單中設置creationDate
導致表單提交時出現錯誤的請求錯誤。
我應該怎么做才能避免這個錯誤?
看起來與Spring MVC相同, 錯誤:無法將類型java.lang.String的屬性值轉換為必需的type 。
也就是說, <form:select>
僅提交一個字符串值,您要告訴Spring將其放入PostCategory
對象中。
嘗試告訴它將值放入category
子對象的id
字段中:
<form:select path="category.id">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.