Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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 重头戏2.3验证Json请求正文_Java_Json_Validation_Playframework 2.0 - Fatal编程技术网

Java 重头戏2.3验证Json请求正文

Java 重头戏2.3验证Json请求正文,java,json,validation,playframework-2.0,Java,Json,Validation,Playframework 2.0,我试图通过在请求体中发送json并将json转换为pojo对象来使用pojo对象中的验证注释。我想做的是让使用这个json的服务在对象无效时返回一个错误的请求。有人知道怎么做吗?我已经看过很多教程,展示了如何使用注释进行表单验证,但是仅仅是一个简单的json请求呢 POJO对象: import play.data.validation.Constraints.*; public class TestObject { @Required @Min(0) public I

我试图通过在请求体中发送json并将json转换为pojo对象来使用pojo对象中的验证注释。我想做的是让使用这个json的服务在对象无效时返回一个错误的请求。有人知道怎么做吗?我已经看过很多教程,展示了如何使用注释进行表单验证,但是仅仅是一个简单的json请求呢

POJO对象:

import play.data.validation.Constraints.*;

public class TestObject {

    @Required
    @Min(0)
    public Integer testInt;

    public Integer getTestInt() {
        return testInt;
    }

    public void setTestInt(Integer testInt) {
        this.testInt = testInt;
    }

}
我可能会通过解析json来查看每个元素,并以这种方式进行验证,但这似乎很荒谬

import models.Domain;
import play.libs.Json;
import play.mvc.BodyParser;
import play.mvc.Controller;
import play.mvc.Result;
import com.fasterxml.jackson.databind.JsonNode;

public class TestController extends Controller {

    @BodyParser.Of(value = BodyParser.Json.class, maxLength = 10 * 1024)
    public static Result create() {

        JsonNode json = request().body().asJson();

        TestObject testObject = Json.fromJson(json, TestObject.class);

        //would like to validate the object here, based on annotations
        //in the bean object...

        //only if the object is valid, return ok...
        return ok(json);
    }

}
这就是我要做的

@BodyParser.Of(value = BodyParser.Json.class, maxLength = 10 * 1024)
public static Result create() {

    JsonNode json = request().body().asJson();

    //this is not neccessary for validation except maybe to be sure the json can be 
    //mapped back to pojo before validating then you'll have to wrap     
    //this statement in a try catch so you can recover from any errors during mapping

    //TestObject testObject = Json.fromJson(json, TestObject.class);

    Form<TestObject> testObjectForm = Form.form(TestObject.class);
    Form<TestObject> testObjForm = testObjectForm.bind(json);

    if(testObjForm.hasErrors){
       doStuff()
    }else{
        return ok(json);
    }
}
@BodyParser.Of(value=BodyParser.Json.class,maxLength=10*1024)
公共静态结果创建(){
JsonNode json=request().body().asJson();
//这对于验证来说不是必需的,只是为了确保json可以
//在验证之前映射回pojo,然后必须包装
//在try-catch中使用此语句,以便您可以从映射期间的任何错误中恢复
//TestObject TestObject=Json.fromJson(Json,TestObject.class);
formtestobjectform=Form.Form(TestObject.class);
表单testObjForm=testObjectForm.bind(json);
if(testObjForm.hasErrors){
多斯塔夫()
}否则{
返回ok(json);
}
}
谢谢和平

因为Play 2.5
Form.Form(…)
已被弃用

以下是您现在应该如何操作:

private FormFactory formFactory;

@Inject
YourContructor(FormFactory formFactory){
    this.formFactory
}


@BodyParser.Of(value = BodyParser.Json.class, maxLength = 10 * 1024)
public static Result create() {

    JsonNode json = request().body().asJson();

    Form<TestObject > TestObjectValidationForm = formFactory.form(TestObject .class)
                                                            .bind(json);
    if(TestObjectValidationForm .hasErrors())
        return badRequest("Invalid");

    TestObject testObject = Json.fromJson(json, TestObject.class);

    //only if the object is valid, return ok...
    return ok(json);
}
private-FormFactory-FormFactory;
@注入
承包商(FormFactory FormFactory){
这是一家制版厂
}
@BodyParser.Of(value=BodyParser.Json.class,maxLength=10*1024)
公共静态结果创建(){
JsonNode json=request().body().asJson();
表单TestObjectValidationForm=formFactory.Form(TestObject.class)
.bind(json);
if(TestObjectValidationForm.hasErrors())
返回请求(“无效”);
TestObject TestObject=Json.fromJson(Json,TestObject.class);
//仅当对象有效时,返回ok。。。
返回ok(json);
}
不管怎样,我真的不喜欢用表格来做。。。没有更好的选择了