【问题标题】:Result of using ResponseEntity with no return value使用没有返回值的 ResponseEntity 的结果
【发布时间】:2016-11-25 16:24:11
【问题描述】:

我使用弹簧靴,它是我的休息控制器之一

@RequestMapping(value = "/members/{memberId}/creditcard", method = RequestMethod.PUT)
public ResponseEntity saveCreditCard(@PathVariable("memberId") Long memberId, @RequestBody CreditCardInfoDto creditCardInfo) throws CreditCardException, ResourceNotFoundException {
    paymentService.saveCreditCard(creditCardInfo);
    return new ResponseEntity(HttpStatus.OK);
}

在客户端,我愿意

jQuery.ajax({
  type: type,
  url: url,
  contentType: "application/json",
  dataType: "json",
  data: data,
  success: function(data, status, jqXHR) {
    if (data) {
    ...
    }
  },
  error: function(jqXHR, status) {
    ...
  }
});

我总是经过错误部分...结果是

qXHR = Object {readyState: 4, responseText: "", status: 200, statusText: "OK"}, status = "parsererror

有什么想法吗?

【问题讨论】:

    标签: jquery spring spring-restcontroller


    【解决方案1】:

    你快到了。在 ResponseEntity 中传递第一个参数作为保存卡片的结果。 这是一个例子

    @RestController
    public class CreditCardController {
    
        @Autowired PaymentService paymentService;
    
        @RequestMapping(value = "/members/{memberId}/creditcard", method = RequestMethod.PUT)
        public ResponseEntity saveCreditCard(@PathVariable("memberId") Long memberId, @RequestBody CreditCardInfoDto creditCardInfo)  {
            CreditCardInfoDto savedCardDto =  paymentService.saveCreditCard(creditCardInfo);
            return new ResponseEntity(savedCardDto, HttpStatus.OK);
        }
    
    }
    
    
    @Service
    class PaymentService {
        public CreditCardInfoDto saveCreditCard(CreditCardInfoDto dto) {
            // business logic to save the credit card
    
            CreditCardInfoDto responseDto = new CreditCardInfoDto();
            responseDto.setName(dto.getName()); //saved name
            responseDto.setCardNumber("******4444"); // get last 4 digit of card
            return responseDto;
        }
    }
    
    class CreditCardInfoDto {
        private String name;
        private String cardNumber;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getCardNumber() {
            return cardNumber;
        }
    
        public void setCardNumber(String cardNumber) {
            this.cardNumber = cardNumber;
        }
    }
    

    【讨论】:

    • 我知道,但我的函数什么也没返回。在这个线程中(就像我们在一些教程中看到的那样):stackoverflow.com/questions/12837907/…,Biju Kunjummen 说的。我尝试了 HttpStatus.NO_CONTENT 并且工作
    猜你喜欢
    • 2022-08-23
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2017-07-07
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多