【问题标题】:How can I GET object only by 1 field under @RequestBody annotation?如何仅通过 @RequestBody 注释下的 1 个字段获取对象?
【发布时间】:2017-09-28 20:58:33
【问题描述】:

我需要一个建议。我不太擅长 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>();}

它包含所有的getter和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注解错误。

谁能给个建议?

【问题讨论】:

    标签: java spring get-request


    【解决方案1】:

    您正在使用 GET 方法在查询字符串中而不是在 HTTP 正文中传递其数据,POST 方法确实在其正文中传递 HTTP 消息。

    因此,使用@RequestBody注解是不对的,请尝试使用@PathVariable

    @RequestBody 注解表示您正在尝试将 HTTP 正文消息中的数据绑定到方法参数。

    【讨论】:

    • 感谢您的回答。我会试试看。
    • 我的回答对你有帮助吗?它解决了你的问题吗? @安德鲁
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多