执行POST请求时出现415错误。 这是我的表格:
<c:url value="/createOrUpdate" var="actionUrl"/>
<form action="${actionUrl}" method="post" enctype="application/x-www-form-urlencoded">
<table class="editor silver">
<tr>
<th colspan="2">Edit advert details</th>
<input type="number" hidden value="${advert.id}" name="id"/>
</tr>
<tr>
<td>Owner:</td>
<td>
<input type="text" disabled value="${advert.owner}" name="owner"/>
</td>
</tr>
<tr>
<td>Publication date:</td>
<td>
<input type="datetime" disabled value="${advert.publicationDate}" name="publicationDate"/>
</td>
</tr>
<tr>
<td>Select rubric</td>
<td>
<select name="rubric">
<option value="sale" selected>Sale</option>
<option value="buy">Buy</option>
<option value="lease">Lease</option>
<option value="services">Services</option>
<option value="dating">Dating</option>
</select>
</td>
</tr>
<tr>
<td>Enter header:</td>
<td>
<input type="text" value="${advert.header}" name="header"/>
</td>
</tr>
<tr>
<td>Enter text:</td>
<td>
<input type="text" value="${advert.text}" name="text"/>
</td>
</tr>
这是我正在做请求的控制器
@RequestMapping(value = "/createOrUpdate", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public ModelAndView editAdvert(@RequestBody Advert advert) {//some actions
广告是一个带有getter和setter的简单POJO:
private long id;
private String owner;
private Date publicationDate;
private String rubric;
private String header;
private String text;
我做错了什么? 附:据我所知,春天应该映射出名称字段&#39;进入POJO的领域。对? 已添加好的,我发现某些值没有以表格形式发送。我在浏览器中检查了控制台,现在没问题,但我仍然得到415错误。
答案 0 :(得分:2)
您可以使用@ModelAttribute
代替@RequestBody
。 RequestBody使用json,xml。删除application / x-www-form-urlencoded,因为它已经是默认类型。
如果您想使用@Requestbody
,那么您使用像JQuery这样的JavaScript库将表单数据发布为json,您将使用Content-Type:application / json发布JSON数据。并使用jackson-lib轻松地将json转换为java对象。
400 - 错误请求
问题可能是发送日期。专注于如何发送日期弹簧mvc。您可以使用@DateTimeFormat
like this或@InıtBinder
答案 1 :(得分:1)
问题在于日期转换。
更改@RequestBody to @MadelAttribute
并放置@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private Date publicationDate;
到模型