Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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 播放:自定义Ebean约束_Java_Scala_Playframework 2.0_Constraints_Ebean - Fatal编程技术网

Java 播放:自定义Ebean约束

Java 播放:自定义Ebean约束,java,scala,playframework-2.0,constraints,ebean,Java,Scala,Playframework 2.0,Constraints,Ebean,我刚开始玩游戏,并试图在我的模型上获得一些自定义约束 我发现这是可行的 @Constraints.Required @Constraints.MaxLength(15) @Constraints.MinLength(4) @Constraints.Pattern(value = "^\\w\\s$") public String username; 但是现在我想用自己的实现添加一个自定义约束(用于检查唯一性),所以我尝试了这个(它是由我的IDE自动完成的,所以它确实存在) 我在某个地方发现(已

我刚开始玩游戏,并试图在我的模型上获得一些自定义约束

我发现这是可行的

@Constraints.Required
@Constraints.MaxLength(15)
@Constraints.MinLength(4)
@Constraints.Pattern(value = "^\\w\\s$")
public String username;
但是现在我想用自己的实现添加一个自定义约束(用于检查唯一性),所以我尝试了这个(它是由我的IDE自动完成的,所以它确实存在)

我在某个地方发现(已经通过了很多链接,所以再也找不到了),该类应该扩展Constraints.Validator

我就是这么做的

 private class UniqueValidator extends Constraints.Validator<String>
{

    @Override
    public boolean isValid(String s) {
        return Account.find.where().eq("username", s).findRowCount() == 0;
    }

    @Override
    public F.Tuple<String, Object[]> getErrorMessageKey() {
        return null;
    }
}
正如上面的NotEmpty验证器链接中所做的那样。但是它说它需要在Tuple之前“new”,但这给了我一个需要实现的方法的类。所以我想这不是真正的方法


当我查看play的文档时,我需要使用@CheckWith注释,但当我选择它时,它会说找不到@CheckWith注释


我迷路了。:-

请注意,
F.Tuple
是一种模板类型,它需要两个模板参数,但是在您尝试的
return
语句中,您没有指定任何模板参数

为了使代码正常工作,只需更改行即可

return Tuple("error.invalid", new Object[] {});

在这个语句中,
F.Tuple
是一个静态工厂方法,它构造并返回一个带有正确模板参数的
Tuple

return Tuple("error.invalid", new Object[] {});
return Tuple("error.invalid", new Object[] {});
return new Tuple<String, Object[]>("error.invalid", new Object[] {});
return F.Tuple("error.invalid", new Object[] {});