播放 Java 表单不递归检查约束
Play Java Forms doesn't check constraints recursively
我正在 Java 中使用 Play 框架 2.3 构建应用程序。
我有 POST 个正文为 JSON 的请求。因此,为了检索数据,我使用具有多层次叠层的 Form 来尊重 JSON 模型。它工作得很好,但我最近认为它不检查约束(如 Constraints.Required)。我实际上不知道它是否一直有这种行为,或者它是否只是我上次测试的形式,但我不能让它保持原样。
那么有人知道是否可以递归检查约束吗?
您的例子在这里不起作用:
public class PairRequest
{
@Constraints.Required
public String epc;
@Constraints.Required
public RequestProduct product;
}
public class RequestProduct
{
//Product data
@Constraints.Required
public String productCode;
@Constraints.Required
public Brand brand;
@Constraints.Required
public String furniture;
}
这里如果字段 'furniture' 不存在,hasError() 函数 return false。
import static play.data.Form.form;
public static Result pair(String tokenString)
{
try
{
Token token = Token.getToken(tokenString);
PairingCommit commit = PairingCommitService.getCommit(token.user);
Form<PairRequest> form = form(PairRequest.class).bindFromRequest();
if(form.hasErrors())//check out for form errors
throw Error.BAD_REQUEST(form.errors());
CommitItemService.create(form.get(), commit);
return ok(toJson(Response.OK));
}
catch(Error error){ return ok(toJson(error)); }
}
您必须添加 @Valid
注释。
我正在 Java 中使用 Play 框架 2.3 构建应用程序。
我有 POST 个正文为 JSON 的请求。因此,为了检索数据,我使用具有多层次叠层的 Form 来尊重 JSON 模型。它工作得很好,但我最近认为它不检查约束(如 Constraints.Required)。我实际上不知道它是否一直有这种行为,或者它是否只是我上次测试的形式,但我不能让它保持原样。
那么有人知道是否可以递归检查约束吗?
您的例子在这里不起作用:
public class PairRequest
{
@Constraints.Required
public String epc;
@Constraints.Required
public RequestProduct product;
}
public class RequestProduct
{
//Product data
@Constraints.Required
public String productCode;
@Constraints.Required
public Brand brand;
@Constraints.Required
public String furniture;
}
这里如果字段 'furniture' 不存在,hasError() 函数 return false。
import static play.data.Form.form;
public static Result pair(String tokenString)
{
try
{
Token token = Token.getToken(tokenString);
PairingCommit commit = PairingCommitService.getCommit(token.user);
Form<PairRequest> form = form(PairRequest.class).bindFromRequest();
if(form.hasErrors())//check out for form errors
throw Error.BAD_REQUEST(form.errors());
CommitItemService.create(form.get(), commit);
return ok(toJson(Response.OK));
}
catch(Error error){ return ok(toJson(error)); }
}
您必须添加 @Valid
注释。