2016-03-31 11 views
2

gelen yük özelliği almak için: Bunun gibi, benim özelliklerine doğrulama ek açıklamalarla bir sınıf var fasulye doğrulama açıklama

@NotNull(payload = INVALID_CATEGORY_DESCRIPTION.class) 
@Size(min = 1, max = 255, payload = INVALID_CATEGORY_DESCRIPTION_LENGHT.class) 
private String description; 

Sonra doğrulama istisnalar işlemek için bir @ControllerAdvice var.

@ResponseStatus(BAD_REQUEST) 
@ResponseBody 
@ExceptionHandler(MethodArgumentNotValidException.class) 
public ResponseEntity<?> methodArgumentNotValidException(MethodArgumentNotValidException exception) { 

Bir veya daha fazla doğrulama ek açıklaması başarısız olduğunda, özel durum işleyici beklendiği gibi tetiklenir.

Yük değeri özelliğini ek açıklamalardan almak için, doğrulama hatalarıyla alanların üzerinde yineleme yapıyorum, sonra ek açıklamaların üzerine ve sonra da açıklama notunun FieldError koduyla karşılaştırılması. Eldeki ek açıklama ile yüke erişebilirim.

İleti özelliği (exception.getMessage()) için olduğu gibi, istisnayı tetikleyen yükü veya ek açıklamaları almanın daha zarif bir yolu olup olmadığını merak ediyorum.

cevap

1

Başlangıç ​​noktanızın ConstraintViolationException olduğunu varsayarak örneklerini getConstraintViolations() aracılığıyla elde edersiniz.

Her ConstraintViolation, getConstraintDescriptor() öğelerine sahiptir ve bu da, başarısız olan kısıtlamalar hakkında meta veriler sağlar. ConstraintDescriptor'a sahip olduğunuzda, getPayload() numaralı telefonu arayın.

+0

Teşekkür ederiz @Hardy, sorun kod ile doğrulamaları gerçekleştirmediğinden MethodArgumentNotValidException başlangıç ​​noktasıdır, ek açıklamalara dayanmaktadır. –

İlgili konular