使用BindingResult把表单错误传出来

本文通过实例演示了如何在Spring MVC中使用BindingResult处理表单数据验证错误,展示了如何捕捉并响应缺少表单字段的情况,提高了应用程序的健壮性和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本概念

这里在特别是在提交表单数据的数据很常见,当提交的数据不完整的时候,也要回Json,并且把错误代码发出来,这里就的使用

BindingResult。

 

演示及代码

正确的例子:

当少一个key和value时:

此时会有Message。

服务器里面:

使用异常,这样也增强了程序的方便,和健壮,方便使用。

程序结构如下:

代码如下:

TestController.java

package parademo.demo.controller;

import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import parademo.demo.enums.ResultEnum;
import parademo.demo.exception.TestException;
import parademo.demo.form.TestForm;

import javax.validation.Valid;

@RestController
@RequestMapping("/test")
public class TestController {

    @PostMapping("/create")
    public String create(@Valid TestForm form,
                         BindingResult bindingResult){

        if(bindingResult.hasErrors()){

            throw new TestException(ResultEnum.ERROR_ONE.getCode(),
                    bindingResult.getFieldError().getDefaultMessage());
        }
        System.out.println(form);

        return "呵呵哒";
    }

    @PostMapping("/create2")
    public String create2(@RequestParam("name") String name,
                          @RequestParam("phone") String phone){

        System.out.println("name: " + name + "   " + "phone: " + phone);
        return "呵呵呵";
    }
}

ResultEnum.java

package parademo.demo.enums;

import lombok.Getter;

@Getter
public enum  ResultEnum {

    ERROR_ONE(1, "错误一"),
    ERROR_TWO(2, "错误二"),
    ERROR_THREE(3, "错误三"),
    ERROR_FOUR(4, "错误四");

    private Integer code;
    private String message;

    ResultEnum(Integer code, String message){

        this.code = code;
        this.message = message;
    }
}

TestException.java

package parademo.demo.exception;

public class TestException extends RuntimeException{

    private Integer code;
    public TestException(){

    }

    public TestException(Integer code, String message){

        super(message);
        this.code = code;
    }
}

 

 

https://my.oschina.net/u/4568560/blog/4323433

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值