如何仅在@requestbody注释下通过1个字段获得对象



我需要一个建议。我不太擅长春季框架,我只想问你一个简单的问题。

我在服务器端有一个下一个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和setter;我只想节省空间。

下一步:我想从数据库中获取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错误。

任何人都可以提供建议吗?

您使用的是在查询字符串中传递其数据而不是HTTP主体中的Get方法,Post方法确实传递了HTTP消息。

因此,使用@RequestBody注释是不正确的,请尝试使用@PathVariable

@RequestBody注释表明您正在尝试将HTTP主体消息中的数据绑定到方法参数。

最新更新