使用 spring 尝试 post 数据时获取空值

Getting nulls when trying to post data using spring

我使用 spring 框架制作了一个 crud ajax rest 应用程序。问题是: 当我从客户端向服务器发送 post 时,我收到 object 填充的空值,从客户端我的状态为 200。这是我的代码:

产品class

public class Product {//getters,setters and toString() generated with Eclipse
     private Integer id;
     private String name;
     private String description;
     private String createdDate;
     private Integer placeStorage;
     private Boolean reserved;

休息控制器

@RestController
public class ProductRestController {
    
    @Autowired
    private ProductServiceImpl productService;
    
    @PostMapping(value = "/getRecord")
    public void addProduct(Product product) {
        System.out.println(product);
    }
    
}

AJAX函数

function sendRecord(data){
        $.ajax({
            type : 'POST',
            url : '/getRecord',
            contentType : "application/json",
            cache : false,
            dataType: 'json',
            processData:false,
            data: data,
            dataType:'json',
            success : function(data) {
                update_table();
            }
        });
    }

我post正在

的数据

我正在获取的数据

您没有告诉 Spring 从哪里获得您的产品。您错过了注释。

@RestController
public class ProductRestController {
    
    @Autowired
    private ProductServiceImpl productService;
    
    @PostMapping(value = "/getRecord")
    public void addProduct(@RequestBody Product product) {
        System.out.println(product);
    }
    
}

您还应该考虑重命名 /getRecord,因为您除了发送一些东西之外什么也得不到。 :)

查看@RequestBody 注释https://www.baeldung.com/spring-request-response-body

@PostMapping(value = "/getRecord")
    public void addProduct(@RequestBody Product product) {
        System.out.println(product);
    }

它会自动将请求正文数据映射到您的产品对象中。如果您有时间,还可以查看 @RequestParam@PathVariable,它们都是用于数据获取的,并且以不同的方式针对不同的目标工作。