在Spring 4 MVC中如何使用javax.validation和JSON请求?

耶赛

我正在使用Spring 4 MVC开发Web应用程序。我想知道是否可以使用javax.validation API验证JSON请求对象例如,我的实体代码中有以下这段代码:

    ...       
    @JsonProperty("cheFecha")
    @NotNull
    @Column(name = "che_fecha")
    @Temporal(TemporalType.DATE)
    @DateTimeFormat(style = "M-")
    private Date SsiCheque.cheFecha;

    @JsonProperty("cheMonto")
    @NotNull
    @JsonSerialize(using = CurrencySerializer.class)
    @Column(name = "che_monto", precision = 10, scale = 2)
    private BigDecimal SsiCheque.cheMonto;
    ...

我有控制器代码:

@RequestMapping(value = "/addCheck", method = RequestMethod.POST)
public @ResponseBody SsiCheque addChecks(@Valid SsiCheque ssiCheque, BindingResult result) {

    //ssiCheque.persist();
    System.out.println("add" + result.getErrorCount());// Zero when there are errors
    return ssiCheque;
}

最后,我有了jQuery代码:

    var formData = $("#formAddChecks :input").serializeArray();
    $.ajax({
        type: "POST",
        url: "addCheck",
        data: formData,
        beforeSend: function ( xhr ) {
            console.log("before Send");
        },
        error: function (request, status, error) {            
            console.log('Error ' + "\n" + status + "\n" + error);
        },
        success: function(data) {
            console.log(data);
        }
    });

JSON对象已正确到达控制器,但我想使用实体javax.annotations API验证JSON。我所看到的只是使用自定义验证程序并“重写”验证代码。

这是验证JSON的唯一方法吗?

提前致谢!

更新1

我遵循@James Massey的建议,我的代码现在看起来像这样:

控制器

@RequestMapping(value = "/addCheck", method = RequestMethod.POST)
@ResponseBody
public SsiCheque addChecks(@Valid @RequestBody SsiCheque ssiCheque, BindingResult result) {

    //ssiCheque.persist();
    System.out.println("agregar " + result.getErrorCount());
    return ssiCheque;
}

Javascript文件

    var ssiCheque = {
            cheNumero : $("#formAddChecks cheNumero").val(),
            cheRecepto : $("#formAddChecks cheReceptor").val(),
            cheMonto : $("#formAddChecks cheMonto").val(),
            cheFecha : $("#formAddChecks cheFecha").val(),
            cheConcepto : $("#formAddChecks cheConcepto").val()
    };


    $.ajax({
        type: "POST",
        contentType: "application/json",
        url: "addCheck",
        data: ssiCheque,
        dataType: "json",
        beforeSend: function ( xhr ) {
            console.log("before Send");
        },
        error: function (request, status, error) {            
            console.log('Error ' /*+ request.responseText*/ + "\n" + status + "\n" + error);
        },
        success: function(data) {
            console.log(data);
        }
    });

但是我提交表单并执行Ajax函数时遇到400错误(请求不正确)在json对象格式和控制器规范不兼容之前,我已经遇到了此错误,但是在这个时候我不知道为什么会是错误。

再次感谢!

耶赛

解决方案(发问人:Jessai更新)

我检查了这个问题:Spring MVC 400 Bad Request Ajax

总而言之,我做了什么:

  1. 创建一个要用JSON.stringify解析的对象,并将其发送到控制器。

  2. 在控制器中,我用@ResponseBody和@RequestBody设置了方法,如@James Massey所说。

  3. 在实体中,我在这些字段中添加了@JSONProperty(我已经拥有了这些)和@JSONIgnore(我已添加到cheId字段中)注释。

Javascript:

    var ssiCheque = {
            cheNumero : $("#formAddChecks #cheNumero").val(),
            cheRecepto : $("#formAddChecks #cheReceptor").val(),
            cheMonto : $("#formAddChecks #cheMonto").val(),
            cheFecha : $("#formAddChecks #cheFecha").val(),
            cheConcepto : $("#formAddChecks #cheConcepto").val()
    };


    $.ajax({
        type: "POST",
        contentType: "application/json",
        url: "addCheck",
        data: JSON.stringify(ssiCheque),
        dataType: "json",
        beforeSend: function ( xhr ) {
            console.log("before Send");
        },
        error: function (request, status, error) {            
            console.log('Error ' /*+ request.responseText*/ + "\n" + status + "\n" + error);
        },
        success: function(data) {
            console.log(data);
        }
    });

控制器

@RequestMapping(value = "/addCheck", method = RequestMethod.POST)
@ResponseBody
public SsiCheque addChecks(@Valid @RequestBody SsiCheque ssiCheque, BindingResult result) {

    //ssiCheque.persist();
    System.out.println("agregar " + result.getErrorCount());
    return ssiCheque;
}

谢谢!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Spring @MVC在请求中填充多个bean

来自分类Dev

Spring 4 MVC,警告:在DispatcherServlet中找不到名称为URI和HTTP 404的HTTP请求的URI映射

来自分类Dev

TomCat EE-Hibernate4和Spring4:会话工厂ClassNotFoundException:javax.persistence.NamedStoredProcedureQuery

来自分类Dev

在Spring 4 MVC中如何使用javax.validation和JSON请求?

来自分类Dev

如何在Spring MVC 4中设置全局配置/变量?

来自分类Dev

如何使用Hibernate4和Spring创建SessionFactory?

来自分类Dev

如何在Spring 4中混合使用Cglib和JDK代理

来自分类Dev

使用Spring MVC 4处理跨域预检AJAX OPTIONS请求

来自分类Dev

在Spring MVC 4中将POJO作为JSON返回

来自分类Dev

如何在Spring Mvc 4中让Soap和Json一起运行两个Web服务?

来自分类Dev

Spring 4 MVC REST XML和JSON响应

来自分类Dev

Spring MVC-分页和请求方法

来自分类Dev

如何使用Spring MVC在URL中隐藏请求参数值

来自分类Dev

在Spring 4中如何使用FasterXML Jackson JSON序列化

来自分类Dev

迁移到Spring MVC 4

来自分类Dev

在Spring 4 MVC中使用属性文件

来自分类Dev

TomCat EE-Hibernate4和Spring4:会话工厂ClassNotFoundException:javax.persistence.NamedStoredProcedureQuery

来自分类Dev

如何在Spring MVC 4和jQuery I18N中使用语言属性?

来自分类Dev

使用Spring MVC 4处理跨域预检AJAX OPTIONS请求

来自分类Dev

Spring 4和OSGI

来自分类Dev

Spring MVC4使用maven未找到带有URI的HTTP请求的映射

来自分类Dev

如何强制Spring MVC4 REST Web服务仅接受json格式的参数?

来自分类Dev

如何使用spring4和ActiveMQ设置JMS代理?

来自分类Dev

Spring 4 MVC(servelt 2.5)和Spring 4 MVC(Servlet 3.0)集成之间的区别

来自分类Dev

集成Spring MVC 4和Hibernate 5

来自分类Dev

如何在spring mvc中输出json

来自分类Dev

如何使用angularjs请求删除spring mvc中的记录

来自分类Dev

如何使用单个请求将图像和 JSON 对象发布到后端 Spring Boot

来自分类Dev

Spring Tools Suit 4 和 Spring roo

Related 相关文章

  1. 1

    如何使用Spring @MVC在请求中填充多个bean

  2. 2

    Spring 4 MVC,警告:在DispatcherServlet中找不到名称为URI和HTTP 404的HTTP请求的URI映射

  3. 3

    TomCat EE-Hibernate4和Spring4:会话工厂ClassNotFoundException:javax.persistence.NamedStoredProcedureQuery

  4. 4

    在Spring 4 MVC中如何使用javax.validation和JSON请求?

  5. 5

    如何在Spring MVC 4中设置全局配置/变量?

  6. 6

    如何使用Hibernate4和Spring创建SessionFactory?

  7. 7

    如何在Spring 4中混合使用Cglib和JDK代理

  8. 8

    使用Spring MVC 4处理跨域预检AJAX OPTIONS请求

  9. 9

    在Spring MVC 4中将POJO作为JSON返回

  10. 10

    如何在Spring Mvc 4中让Soap和Json一起运行两个Web服务?

  11. 11

    Spring 4 MVC REST XML和JSON响应

  12. 12

    Spring MVC-分页和请求方法

  13. 13

    如何使用Spring MVC在URL中隐藏请求参数值

  14. 14

    在Spring 4中如何使用FasterXML Jackson JSON序列化

  15. 15

    迁移到Spring MVC 4

  16. 16

    在Spring 4 MVC中使用属性文件

  17. 17

    TomCat EE-Hibernate4和Spring4:会话工厂ClassNotFoundException:javax.persistence.NamedStoredProcedureQuery

  18. 18

    如何在Spring MVC 4和jQuery I18N中使用语言属性?

  19. 19

    使用Spring MVC 4处理跨域预检AJAX OPTIONS请求

  20. 20

    Spring 4和OSGI

  21. 21

    Spring MVC4使用maven未找到带有URI的HTTP请求的映射

  22. 22

    如何强制Spring MVC4 REST Web服务仅接受json格式的参数?

  23. 23

    如何使用spring4和ActiveMQ设置JMS代理?

  24. 24

    Spring 4 MVC(servelt 2.5)和Spring 4 MVC(Servlet 3.0)集成之间的区别

  25. 25

    集成Spring MVC 4和Hibernate 5

  26. 26

    如何在spring mvc中输出json

  27. 27

    如何使用angularjs请求删除spring mvc中的记录

  28. 28

    如何使用单个请求将图像和 JSON 对象发布到后端 Spring Boot

  29. 29

    Spring Tools Suit 4 和 Spring roo

热门标签

归档