播放 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 注释。