在比赛中实现交叉场验证的最佳方法是什么?如果字段a为空,则字段b必须为> 10,等等?
答案 0 :(得分:1)
如何在这些字段上创建临时伪属性和自定义验证规则?
@Entity
public class Foo extends Model {
public String a;
public int b;
@Transient
@CheckWith(CCheck .class)
transient boolean c;
public boolean getC() {
return a != null || b > 10;
}
static class CCheck extends Check {
public boolean isSatisfied(Object myObject, Object val) {
return Boolean.valueOf(val);
}
}
}
如果这不起作用,那么您可能需要使用a
和'b'创建一个嵌入式类,并使用该类创建对该字段的自定义检查。
答案 1 :(得分:1)
我会直接在我的Controller操作中执行此操作:
public static void action(@Required int a, @Required int b)
{
if (a == null)
{
validation.isTrue(b > 10).message("b must be greater than 10");
}
}