Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于定义自定义错误消息的ConstraintValidatorContext_Java_Spring_Validation_Constraints - Fatal编程技术网

Java 用于定义自定义错误消息的ConstraintValidatorContext

Java 用于定义自定义错误消息的ConstraintValidatorContext,java,spring,validation,constraints,Java,Spring,Validation,Constraints,我想使用注释创建自定义电子邮件验证程序。 以下是注释: @Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = {CommonsEmailValidator.c

我想使用注释创建自定义电子邮件验证程序。 以下是注释:

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE,           ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {CommonsEmailValidator.class})
@Documented
@ReportAsSingleViolation
public @interface ExEmailValidator {

String message() default "        {org.hibernate.validator.constraints.Email.message}";

Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE,          ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface List {
ExEmailValidator[] value();
}
}
@Target({ElementType.METHOD,ElementType.FIELD,ElementType.ANNOTATION\u TYPE,ElementType.CONSTRUCTOR,ElementType.PARAMETER})
@保留(RetentionPolicy.RUNTIME)
@约束(validatedBy={commonEmailValidator.class})
@记录
@报告违规行为
public@interface ExEmailValidator{
String message()默认值“{org.hibernate.validator.constraints.Email.message}”;
类[]组()默认值{};

类您应该使用
@ControllerAdvice
并使用
@ExceptionHandler(MethodArgumentNotValidException.Class)处理验证异常
例如。

您的问题是?有一个异常,因为它是无效的,正如您所期望的,所以我看不出您有什么问题。一件事是您的注释上的
消息
值中有很多前导空格。是的,异常是可以预料的,但我不想显示500个错误,而是希望看到一个错误解释错误的消息。这不允许用户在输入格式良好的电子邮件之前单击提交。验证在服务器上完成,而不是在客户端完成,因此您必须按提交来触发验证。啊,好的。那么cutom错误消息呢?请检查我编辑的帖子。假设您使用的是Spring MVC,请添加
@Valid
添加到要验证的方法参数。
public class CommonsEmailValidator implements         ConstraintValidator<ExEmailValidator, String> {
private static final boolean ALLOW_LOCAL = false;
private EmailValidator realValidator =        EmailValidator.getInstance(ALLOW_LOCAL);

@Override
public void initialize(ExEmailValidator email) {
// TODO Auto-generated method stub  
}
@Override
public boolean isValid(String email, ConstraintValidatorContext         constraintValidatorContext) {
 if( email == null ) return true;
 return realValidator.isValid(email);
 }

 }