Я использую аннотацию javax.validation.Size
для проверки размера строки.
@Data
public class EventRequestBean {
@Size( max = 40 )
private String title;
@Size( max = 50 )
private String topic;
}
И я использую глобальный обработчик исключений для выдачи пользовательского исключения на стороне клиента.
@ExceptionHandler( { MethodArgumentNotValidException.class } )
public final ResponseEntity handleException( Exception e, WebRequest request )
{
if( e instanceof MethodArgumentNotValidException )
{
MethodArgumentNotValidException exception = (MethodArgumentNotValidException) e;
String parameterName = exception.getParameter().getParameterName();
// return buildError(new DataException(GeneralConstants.EXCEPTION, "Invalid content length: field +"e))
return null;
}
return null;
}
В моем пользовательском исключении DataException
вторым аргументом является сообщение об ошибке. Я хочу установить имя поля и допустимое ограничение размера в качестве сообщения.
Я пытаюсь получить имя поля из выданного исключения, но вместо того, чтобы дать мне имя title
, оно дает мне имя параметра eventRequestBean
Я использую в контроллере, откуда выбрасывается это исключение.
@PostMapping( "/event" )
public ResponseEntity createEvent( @Valid @RequestBody EventRequestBean eventRequestBean )
{
try
{
log.info(GeneralConstants.LOGGER_CONSTANT,
" Entered create event controller, path:rest/events/event - POST");
userCommons.throwExceptionForOtherThanAdminUser(getLoggedInUser());
return buildResponse(eventService.addEvent(eventRequestBean, getLoggedInUser()));
}
catch( DataException e )
{
return buildError(e);
}
}
Как я могу получить имя поля и установить допустимый размер, чтобы я мог создать свое собственное пользовательское исключение?