javax.validation.constraints @ Электронная почта не возвращает пользовательское сообщение и регулярное выражение? - PullRequest
0 голосов
/ 24 августа 2018

Я новичок в проверке.

контроллер:

@Validated
@RestController
public class AccountController
{
    @PostMapping( value = "/account/location" )
    public ResponseEntity<LocationAccountVO> createLocationAccount( @RequestHeader 
HttpHeaders headers,@Valid @RequestBody LocationAccountVO locationAccountVO ) throws 
NumberParseException
    {
        return ResponseEntity.status(HttpStatus.CREATED).body( 
accountService.createLocationAccount( locationAccountVO ) );
    }
}

LoacationVo.java:

@Data
@JsonInclude( JsonInclude.Include.NON_NULL )
public class LocationAccountVO
{
private UUID locationId;
    @NotNull(message = "Email is mandatory.")
    @Email( regexp = ValidationConstant.EMAIL, message = "Email be valid")
    private String email;
}

public static final String EMAIL = "\\\\b[A-Z]+@[A-Z0-9.-]+\\\\.[A-Z]{2,4}\\\\b";

но @Email не дает пользовательское сообщение и шаблон также не работает. Пожалуйста, решите мою проблему.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

1 - Добавьте необходимые зависимости в файл pom.xml из Maven Central :

  • весна-загрузка-стартер-веб
  • весна-загрузка-стартер-проверка

2- Добавьте необходимые аннотации в ваш bean-компонент:

@NotEmpty(message = "{email.notempty}")
@Email
private String email;

3- Чтобы читать сообщения из message.properties, вы должны определить компонент MessageSource

@Bean
public ResourceBundleMessageSource messageSource() {
    final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("messages");
    messageSource.setUseCodeAsDefaultMessage(Boolean.parseBoolean("true");
    messageSource.setDefaultEncoding("UTF-8");
    return messageSource;
}

4- Чтобы избежать игнорирования пользовательского валидатора, вы должны установить валидатор, переопределив метод getValidator (). Установите источник сообщения проверки в message.properties.

@Bean(name = "validator")
@Override
public LocalValidatorFactoryBean getValidator() {
    LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
    bean.setValidationMessageSource(messageSource());
    return bean;
}

5 - в файле message.properties в каталоге src / main / resources просто определите сообщение свойства как:

email.notempty=This field is required.

примечание: если это не работает, вы все равно можете сделать это.

javax.validation.constraints.Email.message=Please provide valid email id.
0 голосов
/ 24 августа 2018

Вы можете реализовать таким образом.

@Data
@JsonInclude( JsonInclude.Include.NON_NULL )
public class LocationAccountVO
{
private UUID locationId;
    @NotEmpty(message = "Email is mandatory.")
    @Pattern(regexp = "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", message = "Email be valid")
    private String email;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...