Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Http状态400-客户端发送的请求在语法上不正确。春季MVC_Java_Spring_Jsp_Spring Mvc - Fatal编程技术网

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

Java Http状态400-客户端发送的请求在语法上不正确。春季MVC,java,spring,jsp,spring-mvc,Java,Spring,Jsp,Spring Mvc,我在这个问题上花了很多时间,但无法解决它。请帮忙!当我从JSP提交表单时,我得到了这个错误。 我的代码: 姓名: 年份: ${s.name} 和我的控制器代码: @RequestMapping(value = "", method = RequestMethod.GET) public String albumsGET(ModelMap map) { List<Album> albums = albumDAO.getAllAlbums(); map.addAtt

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


姓名:
年份:
${s.name}

和我的控制器代码:

@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";
}
@RequestMapping(value=”“,method=RequestMethod.GET)
公共字符串albumsGET(模型映射){
List albums=albumDAO.getAllAlbums();
map.addAttribute(“相册”,相册);
返回“转发:/Albums.jsp”;
}
@RequestMapping(value=“/add”,method=RequestMethod.GET)
公共字符串albumsAddGET(模型映射){
map.put(“singers”,singerDAO.getAllSingers());
返回“转发:/WEB-INF/Pages/Album/AddAlbum.jsp”;
}
@RequestMapping(value=“/add”,method=RequestMethod.POST)
公共字符串albumsPOST(@ModelAttribute Album Album,HttpServletRequest req){
Singer s=singerDAO.getSingerById(Long.valueOf(请求getParameter(“Singer”));
s、 getAlbumList().add(相册);
集辛格(s),;
singerDAO.updateSinger(多个);
返回“重定向:/albums”;
}

}

您可以抛出spring提供的自定义异常,创建带有@ControllerAdvice注释的类,并抛出带有不同HTTP状态代码的自定义异常,这是HTTP返回代码为400的@ModelAttribute的参数映射错误

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

  • 您的
    相册
    对象没有参数名称
  • 映射
    Album
    Obejct时有
    NULL
  • 所以,如果您可以检查item
    ${singers}
    ,那么应该正确地检查替换值

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


    我本可以解决这个问题,为
    对象
    (etc.VO)

    设置默认值,检查您的
    相册
    歌手
    实体,如果它与表单正确匹配。
    @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";
    }