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[] {});