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

Post方法@RequestBody对象参数为空

国言
2023-03-14

我正在尝试发布来自邮递员的 POST 请求,但正文中的 json 未转换为控制器中的 java 对象。

@RequestMapping(method = RequestMethod.POST , value="/register")
    public void saveUser(@RequestBody User user){
//user object getting created with all variables null
        manageUserService.saveUser(user);

    }

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.naga</groupId>
    <artifactId>MicroServices</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>MicroServices Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.9</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>1.3.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>1.5.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.7</version>
        </dependency>

    </dependencies>
    <build>
        <finalName>MicroServices</finalName>
    </build>
</project>

在我看到的日志

Hibernate:插入到用户(zip,address1,address2,address3,城市,电子邮件,first_name,last_name,密码,状态,user_name)值 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

不知道是控制器中缺少了什么,还是我的pomPostman请求中的东西是这样发送的

用户对象:

package com.naga.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Long userId;

    private String firstName;

    private String lastName;

    private String email;

    private String address1;

    private String address2;

    private String address3;

    private String city;

    private String state;

    private String Zip;

    private String userName;

    private String password;

    public final Long getUserId() {
        return userId;
    }

    public final void setUserId(Long userId) {
        this.userId = userId;
    }

    public final String getFirstName() {
        return firstName;
    }

    public final void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public final String getLastName() {
        return lastName;
    }

    public final void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public final String getEmail() {
        return email;
    }

    public final void setEmail(String email) {
        this.email = email;
    }

    public final String getAddress1() {
        return address1;
    }

    public final void setAddress1(String address1) {
        this.address1 = address1;
    }

    public final String getAddress2() {
        return address2;
    }

    public final void setAddress2(String address2) {
        this.address2 = address2;
    }

    public final String getAddress3() {
        return address3;
    }

    public final void setAddress3(String address3) {
        this.address3 = address3;
    }

    public final String getCity() {
        return city;
    }

    public final void setCity(String city) {
        this.city = city;
    }

    public final String getState() {
        return state;
    }

    public final void setState(String state) {
        this.state = state;
    }

    public final String getZip() {
        return Zip;
    }

    public final void setZip(String zip) {
        Zip = zip;
    }

    public final String getUserName() {
        return userName;
    }

    public final void setUserName(String userName) {
        this.userName = userName;
    }

    public final String getPassword() {
        return password;
    }

    public final void setPassword(String password) {
        this.password = password;
    }


}

在数据库中,用户对象是持久化的:数据库中的用户对象持久化,但字段中没有任何内容

共有1个答案

鲜于德业
2023-03-14

我相信你在你的实体中丢失了一些东西

@Table
@Entity(name= "User") 
public class User{

@Id 
@GeneratedValue(strategy = GenerationType.AUTO)
private Long userId;

@Column(name="first_name")
private String firstName;

  .....
}

这应该对你有所帮助。

 类似资料:
  • 我可以让这段代码在没有对象作为抽象方法输入参数的情况下工作。例如,如果我亲自将方法的输入参数设置为,emp就会起作用。 当我将输入参数作为方法的对象时,它抛出了一个错误 emp不是抽象的,并且不会覆盖person类emp extends person{^

  • 问题内容: 如何从排球plz帮助发布此请求 js引用了我的jsson对象……我使我的jsson像这样..... 但是它没有响应值请怎么做 问题答案: 首先你的json数据: 然后您的json请求: 注意 标题 如果您想在localhost中进行测试,请使用以下代码并设置您的url以连接您的localhost服务器和ip地址:下面的代码将您的所有请求都放在一个文本文件中,我尝试了一下,即可

  • 问题内容: 我正在使用Jersey开发RESTful服务,并且与GET方法配合使用效果很好。但是我不能使其与POST方法和JSON或文本参数一起使用。这些是我所做的: 我只为所有参数获取空值。我试图只使用一个字符串作为参数,但是它也不起作用……我试图从IOS访问这些方法,也许这就是问题之一。但是我一直在嗅探我的局域网,并且可以在数据包主体中看到正确的参数……这正确吗? 我已经从XCode发送了如下

  • 问题内容: 我有一个像这样的功能: 在功能结束时, elemR 被更改,但是从main方法调用函数后,参数 elemR 仍具有与函数调用之前相同的值。有什么问题?如何在调用函数后更改此ListElement并“保存”此更改,而无需将返回类型更改为ListElement(我也需要整数返回值)? 问题答案: Java函数参数通过引用名称进行调用,这意味着当您将一个对象作为函数参数放置时,JVM将引用的

  • 我有一个用Swagger描述的POSTendpoint,我希望这个endpoint也有查询参数。我们使用1.2 swagger格式是因为传统原因。我们使用3scale,它托管文档,您可以在他们的web UI中编辑您的swagger。然而,当我试图保存文档时,它给我以下错误。 < code>JSON规范不能在同一方法上有paramType='body '和param type = ' query '

  • 当使用EasyMock为void方法设置期望值时,是否可以指定一个对象数组作为该方法的参数之一? 例如,如果我们有这样的内容: 我认为这是因为它在一个Object[]上依赖equals方法,由于两者不同,它返回false并且不满足条件。 有办法绕过它吗?因为我没有使用expect()设置expect,所以我可以使用任何()...有没有一种方法可以在void方法上做同样的事情?