Вам не хватает аннотации @Valid
в подписи вашего метода.Если вы посмотрите на пример, который вы цитируете, то увидите, что он используется для объекта User
.
Итак, в вашем случае:
@Valid @RequestBody WpfPaymentsDTO transaction
Также вы возвращаете два разных типа классов в ResponseEntity<T>
1) ResponseEntity<StringResponseDTO>
inуспешный сценарий проверки
2) ResponseEntity<List<String>>
в случае ошибки проверки
Приведенное выше описание является причиной:
Но в настоящее время я получаю эту ошибку: НевозможноАргументы типа логического вывода для ResponseEntity <>
Если вы посмотрите на пример, который вы цитируете, тип возвращаемого метода - ResponseEntity<Object>
.
Поэтому ваш метод должен измениться на:
@PostMapping(value = "/payment/{unique_transaction_id}",
consumes = { MediaType.APPLICATION_JSON_VALUE },
produces = { MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<Object> handleWpfMessage(
@PathVariable("unique_transaction_id") String unique_transaction_id,
@Valid @RequestBody WpfPaymentsDTO transaction,
BindingResult result,
HttpServletRequest request) throws Exception {
Обновление:
Есть ли способ узнать, для какой переменной возникает ошибка проверки?
Да, вы можете получить все поляОшибки привязки, такие как:
List<FieldError> errors = bindingResult.getFieldErrors();
for (FieldError error : errors ) {
System.out.println ("Validation error in field: " + error.getField()
+ "! Validation error message: " + error.getDefaultMessage()
+ "! Rejected value:" + error.getRejectedValue());
}