Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 SpringWebMVC Post请求多对象_Java_Spring_Spring Mvc - Fatal编程技术网

Java SpringWebMVC Post请求多对象

Java SpringWebMVC Post请求多对象,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一个插入对象的方法。但此对象与另一个对象映射为一对多 @Entity public class FutureMessage { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String message; @ManyToOne private User user; public int getId() { return

我有一个插入对象的方法。但此对象与另一个对象映射为一对多

@Entity
public class FutureMessage {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    private String message;
    @ManyToOne
    private User user;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}
此FutureMessage对象已映射到用户对象,但post请求存在问题

{
  "message":"qwerasdf",
  "user":{"id":15,"username":"XXX"}
}
此请求返回200,但在数据库中XXX不是id 15的正确用户名。 同时,如果此请求中不存在用户,它也会返回200(确定)。
我的问题是,我不想发送用户id。我只想发送消息和用户名。(FutureMessage对象中有两个以上的属性)

@RequestMapping(path="message/new",method=RequestMethod.POST)
public FutureMessage newMessage(@RequestBody FutureMessage newMsg){// how to add user name here ?
    FutureMessage msg = null;
    if(newMsg==null)
        return null;
    if(newMsg.getUser()==null){
        return null;
    }
    try{
        msg = messageRepository.save(newMsg);
    }catch(Exception ex){
        ex.printStackTrace();
    }

    return msg;
}

编辑:我只想将FutureMessage对象和用户名作为ResponseBy发送。这是我的问题,不返回404或其他任何内容

Spring具有名为
ResponseEntity
的参数化对象,您应该从控制器方法返回该对象。它允许您根据请求以编程方式发送不同的HTTP响应。看看这个例子,当请求不正确时返回400响应,在您的情况下,
用户
为空


至于用户
XXX
和id
15
之间的不匹配,我不完全理解您的问题是什么。听起来你只是想发送消息和用户名?如果是这种情况,那么您的存储库需要足够智能来检查用户名,用户名最好是唯一的,否则会发生冲突。

Spring已将名为
ResponseEntity的对象参数化,您应该从控制器方法返回该对象。它允许您根据请求以编程方式发送不同的HTTP响应。看看这个例子,当请求不正确时返回400响应,在您的情况下,
用户
为空


至于用户
XXX
和id
15
之间的不匹配,我不完全理解您的问题是什么。听起来你只是想发送消息和用户名?如果是这种情况,您的存储库需要足够智能,以检查用户名,用户名最好是唯一的,否则您将遇到冲突。

对您的第一个问题做出响应。即使您返回null,也将是成功(状态代码-200)http请求。如果在发现逻辑返回null时特别希望将请求作为坏请求发送,则返回

return new ResponseEntity<String>(HttpStatus.BAD_REQUEST);
返回新的响应属性(HttpStatus.BAD_请求);


第二,当您不想发送用户id时。请确保您已在模型(消息、用户)之间配置了正确的关系,并且已将用户id的生成类型放置到任何id生成策略中,例如自动递增,以响应您的第一个问题。即使您返回null,也将是成功(状态代码-200)http请求。如果在发现逻辑返回null时特别希望将请求作为坏请求发送,则返回

return new ResponseEntity<String>(HttpStatus.BAD_REQUEST);
返回新的响应属性(HttpStatus.BAD_请求);

第二,当您不想发送用户id时。请确保您已在模型(消息、用户)之间配置了正确的关系,并且已将用户id的生成类型放置到任何id生成策略(如自动增量)中