发布表单时出现Spring MVC 415错误

时间:2017-04-01 18:51:19

标签: java spring model-view-controller web

执行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错误。

2 个答案:

答案 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; 到模型