java - 将@RequestBody 转换为对象

标签 java jquery spring jakarta-ee spring-mvc

伙计们,好吧,我已经做了足够的研究,但我仍然找不到解决这个问题的方法。

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

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

    // Some operations.

员工护照是这样的:

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
}

当我调用/savePassport 时,出现不受支持的媒体异常。我想这与类型转换有关。

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

我哪里错了?你是对的。我是 Spring 的初学者,但我喜欢它。

最佳答案

看起来您使用了错误的注释。 @RequestBody 用于请求正文中包含任意内容的请求,例如 JSON、某些应用程序定义的 XML、逗号分隔的变量……等等。并使用您在调度程序 servlet 中配置的编码器将其转换为对象。

如果您只想让 Spring 为您将一个普通的旧表单绑定(bind)到支持对象,则方法参数上的正确注释是 @ModelAttribute

关于java - 将@RequestBody 转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5889973/

相关文章:

java - 无法向 Jtree 添加叶子

java - 如何将文件作为参数传递给 Java 调用的 Python 进程

javascript - 从我的构造函数对象创建一个 youtube iframe 视频,这样我就可以创建多个视频

jquery - 如何更改 jqgrid 中弹出的列选择器中的列名称?

java - Spring ORM 4.0.5 和 Hibernate 4.3.5 - 无法保存到数据库

java - 当我已经使用 onBackPressed() 来让 webview 返回时,如何在 android 应用程序中弹出警报框以退出?

java - Spring 和 Hibernate 运行时错误

具有流体/液体宽度的 jQuery 图像轮播

java - 从 JSON 创建 CLOB 属性

java - Spring独特的bean——多模块