Validation 如何在自定义验证批注上使用椭圆

Validation 如何在自定义验证批注上使用椭圆,validation,playframework,annotations,playframework-1.x,oval,Validation,Playframework,Annotations,Playframework 1.x,Oval,下面是我创建用于验证名称的自定义注释的代码 ValidName.java package custom.Annotation; import java.lang.annotation.*; import net.sf.oval.configuration.annotation.Constraint; @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.LOCAL_VARIABLE) @Constraint(che

下面是我创建用于验证名称的自定义注释的代码
ValidName.java

package custom.Annotation;
import java.lang.annotation.*;
import net.sf.oval.configuration.annotation.Constraint;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.LOCAL_VARIABLE)
@Constraint(checkWith=NameValidator.class)
public @interface ValidName {
String  message() default NameValidator.message;
}
这是我的约束类代码

package custom.Annotation;
import net.sf.oval.Validator;
import net.sf.oval.configuration.annotation.AbstractAnnotationCheck;
import net.sf.oval.context.OValContext;
import net.sf.oval.exception.OValException;
import play.Logger;
import java.util.regex.Pattern;
public class NameValidator extends AbstractAnnotationCheck<ValidName>
{    
public final static String message="custom.message";
private static final String letter = "[a-zA-Z]";
public static final Pattern VALID_PATTERN = Pattern.compile(letter);

public static boolean isValidText(String userName) {
    return VALID_PATTERN.matcher(userName).matches();
}


@Override
public void configure(ValidName annotation) {
    setMessage(annotation.message());
}
@Override
public boolean isSatisfied(Object validatedObject, Object valueToValidate, OValContext context,
                           Validator validator) throws OValException {
    try
    {
        if (valueToValidate == null) {
            return false;
        }
    }catch (Exception e){
        e.getMessage();
    }
           return` isValidText(valueToValidate.toString()`); 
}
}
package-custom.Annotation;
导入net.sf.oval.Validator;
导入net.sf.oval.configuration.annotation.AbstractAnnotationCheck;
导入net.sf.oval.context.OValContext;
导入net.sf.oval.exception.OValException;
导入play.Logger;
导入java.util.regex.Pattern;
公共类NameValidator扩展了AbstractAnnotationCheck
{    
公共最终静态字符串message=“custom.message”;
私有静态最终字符串字母=“[a-zA-Z]”;
公共静态最终模式有效_Pattern=Pattern.compile(字母);
公共静态布尔值isValidText(字符串用户名){
返回有效的_PATTERN.matcher(userName.matches();
}
@凌驾
公共void配置(ValidName注释){
setMessage(annotation.message());
}
@凌驾
公共布尔值已满足(对象validatedObject、对象valueToValidate、OValContext上下文、,
验证程序(Validator)抛出OValException{
尝试
{
如果(valueToValidate==null){
返回false;
}
}捕获(例外e){
e、 getMessage();
}
返回`isValidText(valueToValidate.toString()`);
}
}
当我将
@ValidName
应用于任何局部变量时,什么都没有发生
我也无法调试程序。有什么建议吗?

您需要通过调用
oval validation
库的
validate
方法来使用oval validation

@Autowired
@Qualifier("ovalValidator")
private Validator ovalValidator;            

List<ConstraintViolation> violations = null;
violations = ovalValidator.validate(objectToValidate);
@Autowired
@限定词(“ovalValidator”)
专用验证器ovalValidator;
列表冲突=null;
违规行为=ovalValidator.validate(objectToValidate);

为什么不实施自定义播放验证程序?这是一个很好的开始回答。很抱歉没有提到我正在使用play 1.4.1,因此play.data.validation.Constraints类不可用here@adgPlay1.x也有自定义验证。