【问题标题】:restTemplate.postForObject not sending all the member variables of objectrestTemplate.postForObject 不发送对象的所有成员变量
【发布时间】:2021-04-08 16:20:03
【问题描述】:

我正在尝试使用 restTemplate.postForObject 将对象发布到另一个服务,但其中一个成员变量值变为 0。但是当我尝试在 chrome 浏览器中使用 rest 客户端发送相同的发布请求时,然后所有的价值观都在发展。请帮助我在哪里做错了。

客户端代码

// Sender. Sending the seed object to bidServiceEndpoint + "seedbid".
    private Bid saveSeedBid(Seed seed) {
        Bid bid = new Bid();
        bid.setEmail(seed.getEmail());
        log.info("seed price = " + seed.getSeed_price());
        bid.setNew_price(seed.getSeed_price());
        bid.setSid(seed.getSid());
        log.info("seed info " + seed.toString());
        log.info("Saving seed bid " + bid.toString());
        return restTemplate.postForObject(bidServiceEndpoint + "seedbid", seed, Bid.class);

这是打印

2021-04-08 21:08:50.168  INFO 13912 --- [nio-5003-exec-7] murali.bidder.seed.service.SeedService   : Saving seed bid Bid(bid=null, bid_time=null, email=xyz@gmail.com, old_price=0, new_price=500, sid=41ee3f6e-0afd-4d26-b827-12e5687fadc2)

请注意,我正在传递电子邮件、new_price 和 sid。这里 new_price 的值为 500。

现在是服务器代码:-

    @PostMapping("/seedbid")
    public Bid saveSeedBid(@RequestBody Bid bid) {
        log.info("Saving seed bid " + bid.toString());
        return bidService.saveSeedBid(bid);
    }

这是打印

2021-04-08 21:08:50.189  INFO 13040 --- [nio-5004-exec-1] m.bidder.bid.controller.BidController    : Saving seed bid Bid(bid=null, bid_time=null, email=xyz@gmail.com, old_price=0, new_price=0, sid=41ee3f6e-0afd-4d26-b827-12e5687fadc2)

如果您观察到 email 和 sid 正常发送,但 new_price 为 0。

请帮助说明为什么 new_price 为零。

这里是出价pojo


import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Bid {

    private String bid;
    
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss.SSS")
    private Date bid_time;
    
    private String email;
    
    private int old_price;
    
    private int new_price;
    
    private String sid;
}

【问题讨论】:

  • 注意 Java 命名约定。不要在变量名中使用_。在java中使用camelCase是很常见的
  • 您确定seed.getSeed_price() 返回的值不同于0?
  • 尝试将 Bid 包含在 HttpEntity 中,并在 postForObject 中使用 HttpEntity
  • 当然。谢谢。我将更改为使用命名约定。设置后,我正在打印 log.info("Saving seed bid " + bid.toString());此输出我粘贴在 2021-04-08 21:08:50.168 INFO 13912 --- [nio-5003-exec-7]murali.bidder.seed.service.SeedService 上方:保存种子出价 Bid(bid=null, bid_time= null, email=xyz@gmail.com, old_price=0, new_price=500, sid=41ee3f6e-0afd-4d26-b827-12e5687fadc2) 这里new_price值为500
  • 2021-04-08 21:08:50.167 INFO 13912 --- [nio-5003-exec-7]murali.bidder.seed.service.SeedService : 种子价格 = 500

标签: java spring rest resttemplate


【解决方案1】:

我想..对不起。这是小错误。在客户端代码中,我发送的是 Seed 类型的种子对象,而在服务器端,我期待 Bid 类型的出价对象。我应该传递出价对象而不是种子对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2016-12-28
    相关资源
    最近更新 更多