将@RequestBody转换为对象

Fir*_*mir 7 java jquery spring spring-mvc java-ee

伙计们,我做了足够多的研究,但我找不到解决方法.

简而言之,我只是将url编码的表单数据传递给Controller方法,并尝试将其转换为具有Date和整数的域对象.

@RequestMapping(value = "/savePassport", method = RequestMethod.POST)
    public @ResponseBody
    AjaxResponse savePassport(@RequestBody StaffPassport passport, HttpServletResponse response) {

    // Some operations.
Run Code Online (Sandbox Code Playgroud)

}

员工护照看起来像这样:

import java.sql.Date;

public class StaffPassport {

    private int staffId;
    private String passportNumber;
    private String placeOfIssue;
    private Date issueDate;
    private Date expiryDate;
    private String spouseName;
    private String oldPassportRef;
    private String visaInfo;
    private String description;
//gets/sets
}
Run Code Online (Sandbox Code Playgroud)

当我调用/ savePassport时,我得到不支持的媒体异常.我猜这与铸造有关.

我不能正常工作.当然我可以使用@RequestParam捕获单独的表单数据并手动进行转换,但这不是框架的重点不是吗?

我哪里错了?而你是对的.我是春天的初学者,但我喜欢它.

Aff*_*ffe 9

看起来你正在使用错误的注释. @RequestBody用于获取其主体中具有任意内容的请求,例如JSON,某些应用程序定义的XML,逗号分隔的变量等等.并使用您在调度程序servlet中配置的编组器将其转换为对象.

如果要做的就是让Spring将一个普通的旧表单帖子绑定到后备对象上,那么放在方法参数上的正确注释就是@ModelAttribute.