0

I use spring boot and it's one of my rest controller

@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);
}

On the client side, I do

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

I pass alway by the error section... result it's

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

Any idea?

bernard deromme
  • 151
  • 2
  • 3
  • 19

1 Answers1

0

You are almost there. In ResponseEntity pass the first parameter as the result of saved card. Here is the example

@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;
    }
}

enter image description here

tashi
  • 782
  • 6
  • 5
  • i know that but my function return nothing. In this thread (like we can see in some tutorial) : http://stackoverflow.com/questions/12837907/what-to-return-if-spring-mvc-controller-method-doesnt-return-value , Biju Kunjummen said it. I tried with HttpStatus.NO_CONTENT and that work – bernard deromme Jul 22 '16 at 11:18