当前位置: 首页 > 知识库问答 >
问题:

Http状态400-客户端发送的请求在语法上不正确。SpringMVC

卓宏达
2023-03-14

我在这个问题上花了很多时间,但无法解决它。请帮忙!当我从JSP提交表单时,我得到了这个错误。我的代码:

<form  action="/albums/add" method="post">
<%--<div><input type="file"></div>--%>
<div>Name: <input type="text" name="name" placeholder="Name"></div>
<div>Year: <input type="text" name="year" placeholder="Release year"></div>
<div>
    <select name="singer" id="singer">
    <c:forEach items="${singers}" var="s">
        <option value="${s.id}">${s.name}</option>
    </c:forEach>
</select>
</div>
<input type="submit" >

和我的控制器代码:

@RequestMapping(value = "", method = RequestMethod.GET)
public String albumsGET(ModelMap map) {
    List<Album> albums = albumDAO.getAllAlbums();
    map.addAttribute("albums", albums);
    return "forward:/Albums.jsp";
}

@RequestMapping(value = "/add", method = RequestMethod.GET)
public String albumsAddGET(ModelMap map) {
    map.put("singers", singerDAO.getAllSingers());
    return "forward:/WEB-INF/Pages/Album/AddAlbum.jsp";
}

@RequestMapping(value = "/add", method = RequestMethod.POST)
public String albumsPOST(@ModelAttribute Album album, HttpServletRequest req) {

        Singer s = singerDAO.getSingerById(Long.valueOf(req.getParameter("singer")));
        s.getAlbumList().add(album);
        album.setSinger(s);
        singerDAO.updateSinger(s);
    return "redirect:/albums";
}

}

共有2个答案

司空浩邈
2023-03-14

这是HTTP返回代码400的@modeldattribute的参数映射错误。

导致这种错误的原因是多方面的。

  1. 没有您的AlbumObject的参数名。
  2. 映射AlbumObejct有NULL值。

所以,如果您可以检查item${singers},那么应该正确地检查替换值。

接下来,在相册对象中,您应该检查getter/setter方法。

我本可以解决这个问题,为对象设置默认值(等VO)

邵畅
2023-03-14

您可以抛出spring提供的自定义异常,创建带有@ControllerAdvice注释的类,并抛出带有不同HTTP状态代码的自定义异常

 类似资料:
  • 这是我的控制器 我的豆子是 当我给出的名称介于5到45个字符之间时,表单将被验证。但当表单未被验证时,我会收到400状态错误报告。我不知道为什么我会出错。这里需要帮助吗

  • 这里是LocationSearchMetaData.java 我的控制器 我的客户要求是这样的 下面是实际数据请求 获取时出错I:

  • 我有一个表单,用户可以使用它将文件上传到本地驱动器,还可以将一些数据保存到数据库中。但是出现了这个错误消息,我想知道如何处理它。 控制器 形式本身 我试图先保存表单,我将使用单独的方法发送它。

  • 我已经创建了一个MVC结构来为患者保存一个新的记录,我不断收到404错误。这是我的密码, 病人JAVA 控制器类 Dao实现类 调度servlet 耐心形成。jsp web.xml 我可以获取列表,但当我尝试从PatientForm保存患者详细信息时。jsp时,表单未将其提交给控制器,并给出400状态错误

  • 在我的jsp页面中有两个表单,每个表单都有一个提交按钮。。。我想将表单1发送到我的控制器,该控制器由两个图像和几个表单字段组成。 控制器。JAVA 学校Details.jsp

  • 我希望在调试这个问题时得到一些帮助。如果我将以下JSON发送到后端,它将正常工作: 但是,如果我现在发送以下内容: 我得到了上面的错误。在我的后端代码中,我有以下代码: API 方法签名如下所示: 我认为我遇到的问题是JSON不能被解析为ZonedDateTime。有人对以下两个问题有什么建议吗?( json字符串格式ZonedDateTime自动接受什么时间,( 2)如何创建DTO来解析zone