在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 4 MVC中如何使用javax.validation和JSON请求?

来自分类Dev

Spring 4 MVC REST XML和JSON响应

来自分类Dev

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

来自分类Dev

集成Spring MVC 4和Hibernate 5

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何使用Hibernate4和Spring创建SessionFactory?

来自分类Dev

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

来自分类Dev

Spring 4和OSGI

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

在Spring 4 MVC中使用属性文件

来自分类Dev

如何在spring mvc中输出json

来自分类Dev

Spring Tools Suit 4 和 Spring roo

来自分类Dev

Spring MVC-分页和请求方法

来自分类Dev

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

来自分类Dev

迁移到Spring MVC 4

Related 相关文章

  1. 1

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

  2. 2

    Spring 4 MVC REST XML和JSON响应

  3. 3

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

  4. 4

    集成Spring MVC 4和Hibernate 5

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

    如何使用Hibernate4和Spring创建SessionFactory?

  13. 13

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

  14. 14

    Spring 4和OSGI

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

    在Spring 4 MVC中使用属性文件

  25. 25

    如何在spring mvc中输出json

  26. 26

    Spring Tools Suit 4 和 Spring roo

  27. 27

    Spring MVC-分页和请求方法

  28. 28

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

  29. 29

    迁移到Spring MVC 4

热门标签

归档