Java 理解playframework中的验证

Java 理解playframework中的验证,java,playframework,Java,Playframework,为了理解playframework1.2.4中验证是如何工作的,我通过了和 还是有几件事困扰着我 在文档中,URICheck类具有以下方法 @Override public void configure(URI uri) { setMessage(uri.message()); this.schemes = Arrays.asList(uri.schemes()); } uri.schemes()从何而来?除了@接口uri之外,还有uri类吗 另外,在后面的issatified

为了理解playframework1.2.4中验证是如何工作的,我通过了和 还是有几件事困扰着我

在文档中,URICheck类具有以下方法

@Override
public void configure(URI uri) {
    setMessage(uri.message());
    this.schemes = Arrays.asList(uri.schemes());
}
uri.schemes()
从何而来?除了
@接口uri
之外,还有uri类吗

另外,在后面的
issatified()
方法中

public boolean isSatisfied(Object validatedObject, Object value,OValContext context, Validator validator){
...
}
ValidateObject是URI的实例,不是吗?value参数是传递的需要验证的实际值

如果有人能澄清这些,那将非常有帮助。我希望javadocs中有更多的内容来解释参数
@interface URI没有任何这样的方法。

我在PLay的源代码中没有看到URI类,只有URL,但行为将是相同的

使用与验证相关的注释对字段进行注释时,可以为该注释提供一些参数。例如,要简化:

   @Max(value=10, message="My error message")
   public int myValue;
该注释定义如下:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Constraint(checkWith = MaxCheck.class)
public @interface Max {

    String message() default MaxCheck.mes;
    double value();
}
如您所见,它有两个方法,其名称与我设置的参数相同。调用这些方法后,我将获得与注释实例相关的参数

稍后,Play通过反射执行一些“魔法”,以检查与实体字段相关的注释,在configure方法中使用该实例,然后执行ISsatified方法

Max
的配置方法是:

@Override
    public void configure(Max max) {
        this.max = max.value();
        setMessage(max.message());
    }
如您所见,它使用了您在实体中初始化的注释中的方法


我希望这会有所帮助:)

谢谢你的回复,该文档中唯一名为URI的实体是该名称的@接口。可能是[该页面][1]遗漏了一些内容。你的解释让事情更清楚了。[1]: