У меня есть код, который получает данные от пользователя и скорее проверяет, действителен он или нет.
Валидация данных из URL
и данных из JSON
.
Проблема в том, что в случае URL
поле пути содержит arg0
и что мне требуется взять его из message
:
@ValidId (message = "The field is invalid")
private Long field;
аннотация поля.
В случае JSON
я просто могу получить поле от path.substring(path.lastIndexOf('.') + 1)
.
* * 1 022 * т.е. 1023 *
protected String buildErrorMessage(ConstraintViolation<?> violation) {
String path = violation.getPropertyPath().toString();
String field = path.substring(path.lastIndexOf('.') + 1);
//field = `arg0` in case of url
//field = `field` in case of JSON
}
Если я столкнулся с ConstraintViolation -
как я могу узнать, было ли нарушение от JSON
или GET
?
EDIT
Здесь я вызываю buildErrorMessage из -
public class ValidationExceptionMapper implements ExceptionMapper<ValidationException> {
@Override
public Response toResponse(ValidationException exception) {
if (exception instanceof ConstraintViolationException) {
final ConstraintViolationException constraint = (ConstraintViolationException) exception;
for (final ConstraintViolation<?> violation : constraint.getConstraintViolations()) {
String message = buildErrorMessage(violation); //HERE
}
}