如何发送模型属性,属性也是春天的模型

时间:2017-11-10 21:18:57

标签: spring spring-mvc spring-boot

我有两个模特。

@Entity
class Product {
  @Id
  private String id;
  private String name;
  @ManyToOne(optional = false)
  @JoinColumn(name = "category_id", referencedColumnName = "id")
  @NotNull(groups = {CREATE.class, UPDATE.class})
  private Category category;
  ...
}
@Entity
class Category {
  @Id
  private String id;
  private String name;
  ...
}

@RestController
@RequestMapping(path = "/product")
class ProductController {
  @RequestMapping(method = RequestMethod.POST)
  public void create(@ModelAttribute Product product) {
    ...
  }
}

我想向ProductController发送请求:

http POST http://localhost:8080/product name=='Product 1' category=1

param类别是分类到db的id,但是spring不理解它。

是否可以这样做?

1 个答案:

答案 0 :(得分:0)

嗯,你的授权类是可以的,但是在POST请求中查看参数真的很奇怪,特别是你把它放在这里。 这是我的样本正常工作

public class Product {
  private String id;
  private String name;
  private Category category;
  ******
}

public class Category {
  private String id;
  private String name;
  *******
}

@RestController
@RequestMapping(path = "/product")
public class ProductController {

  @RequestMapping(method = RequestMethod.POST)
  public void create(@ModelAttribute Product product) {
    Product prd1 = product;
    prd1.getId();
  }
}

以防万一这是appConfig:

@Configuration
@EnableWebMvc
public class AppConfig {

}

就是这样。现在,您的控制器希望获得一条Product实例的消息。 让我们继续吧。在POST查询中查看参数非常奇怪。我已经进行了一些测试,他们没问题 - 只需将数据作为请求体传递!不管你有什么。例如,让我们修改控制器,如下所示:

  @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
  public void create(@ModelAttribute Product product) {
    Product prd1 = product;
    prd1.getId();
  }
}

现在你必须发送一条POST消息,其主体包含一个JSON格式的产品数据,即

{ "id": 1 }

它适用于spring支持的所有其他格式