如何仅通过 @RequestBody 注释下的 1 个字段获取对象?
How can I GET object only by 1 field under @RequestBody annotation?
我需要一个建议。我不太擅长Spring框架,我只是想问你一个简单的问题。
我在服务器端有下一个 POJO 对象:
@Entity
@Table(name = "AutoRate")
public class AutoService {
public AutoService() {
}
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
private long id;
@Column(name = "serviceName", nullable = false)
private String serviceName;
@Column(name = "imageURL", nullable = false)
private String imageURL;
@Column(name = "mapCoordinate", nullable = false)
private String mapCoordinate;
@Column(name = "websiteURL", nullable = false)
private String websiteURL;
@Column(name = "phoneNumber", nullable = false)
private String phoneNumber;
@JsonManagedReference
@OneToMany(mappedBy = "autoService", fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
private List<Service> services = new ArrayList<Service>();}
它包含了所有的getters和setters;我只想保存 space.
下一步:我想从数据库中为客户端获取 1 个对象,我想只使用数据库中的 serviceName
变量。
我有下一个控制器方法:
@RequestMapping(value = "/getAutoService", method = RequestMethod.GET)
@ResponseBody
public AutoService getAutoService(@RequestBody String serviceName){
AutoService autoService = dataBaseService.getByName(serviceName);
return autoService;
}
接到客户电话后,我收到下一个错误:
117899 [http-apr-8080-exec-1] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.webserverconfig.user.entity.AutoService com.webserverconfig.user.controller.ServiceController.getAutoService(com.webserverconfig.user.entity.AutoService)
我认为我使用的 @RequestBody
注释有误。
有人可以给个建议吗?
您正在使用 GET 方法,该方法在查询字符串中而不是在 HTTP 正文中传递其数据,POST 方法确实在其正文中传递 HTTP 消息。
因此,使用@RequestBody
注解是不对的,请尝试使用@PathVariable
代替。
@RequestBody
注释表示您正在尝试将 HTTP 正文消息中的数据绑定到方法参数。
我需要一个建议。我不太擅长Spring框架,我只是想问你一个简单的问题。
我在服务器端有下一个 POJO 对象:
@Entity
@Table(name = "AutoRate")
public class AutoService {
public AutoService() {
}
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
private long id;
@Column(name = "serviceName", nullable = false)
private String serviceName;
@Column(name = "imageURL", nullable = false)
private String imageURL;
@Column(name = "mapCoordinate", nullable = false)
private String mapCoordinate;
@Column(name = "websiteURL", nullable = false)
private String websiteURL;
@Column(name = "phoneNumber", nullable = false)
private String phoneNumber;
@JsonManagedReference
@OneToMany(mappedBy = "autoService", fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
private List<Service> services = new ArrayList<Service>();}
它包含了所有的getters和setters;我只想保存 space.
下一步:我想从数据库中为客户端获取 1 个对象,我想只使用数据库中的 serviceName
变量。
我有下一个控制器方法:
@RequestMapping(value = "/getAutoService", method = RequestMethod.GET)
@ResponseBody
public AutoService getAutoService(@RequestBody String serviceName){
AutoService autoService = dataBaseService.getByName(serviceName);
return autoService;
}
接到客户电话后,我收到下一个错误:
117899 [http-apr-8080-exec-1] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.webserverconfig.user.entity.AutoService com.webserverconfig.user.controller.ServiceController.getAutoService(com.webserverconfig.user.entity.AutoService)
我认为我使用的 @RequestBody
注释有误。
有人可以给个建议吗?
您正在使用 GET 方法,该方法在查询字符串中而不是在 HTTP 正文中传递其数据,POST 方法确实在其正文中传递 HTTP 消息。
因此,使用@RequestBody
注解是不对的,请尝试使用@PathVariable
代替。
@RequestBody
注释表示您正在尝试将 HTTP 正文消息中的数据绑定到方法参数。