@Valid注解的使用

@Valid注解的使用

@Valid注解用于校验,所属包为:javax.validation.Valid。

1、使用Valid注解之前,需要先在实体类的属性上添加充当校验条件的注解,如Type类下面的name属性不能为空

public class Type {
    private Long id; //id
    @NotBlank(message = "分类名不能为空!")
    private String name;    //类型名
}

2、然后在controller层的方法的要校验的参数上添加@Valid注解,并且需要传入BindingResult对象,用于获取校验失败情况下的反馈信息,如下代码:

@PostMapping("/types/edit/{id}")
public String edit(@Valid Type type, BindingResult result,RedirectAttributes attributes) {

    List<Type> typeList = typeService.getTypeByName(type.getName());

    if (typeList.size()>0){
        /*field:绑定需要校验的名字,errorCode:自定义的名称,Message:要输出的错误信息*/
        result.rejectValue("name","nameError","修改后的分类名已存在,请重试!");
    }

    //判断是否有错误信息
    if (result.hasErrors()){
        return "admin/types-input";
    }

    return "redirect:/admin/types";
}

同时,bindingResult.getFieldError.getDefaultMessage()用于获取相应字段上添加的message中的内容,如:@NotBlank注解中message属性的内容

3、如何在前端页面展示错误信息

可以通过thymeleaf模板中的th:if="${#fields.hasErrors(‘属性名’)来获取

如何获取属性名呢,可以通过th:object来绑定一个对象,然后通过th:value=*{属性名}来为属性名赋值,最终就可以获取出错的属性

代码如下:

<div class="m-padded-tb-big m-container-small">
    <div class="ui container">
        <!--绑定type类-->
        <form action="#" method="post" class="ui form" th:object="${type}"
              th:action="*{id} == null ? @{/admin/types/addType} : @{/admin/types/edit/{id}(id=*{id})}">
            <input type="hidden" name="id" th:value="*{id}">
            <div class="required field">
                <div class="ui left labeled input">
                    <label class="ui teal basic label">名称</label>
                    <!--通过th:value给name属性赋值-->
                    <input type="text" name="name" placeholder="分类名称" th:value="*{name}">
                </div>
            </div>

            <div class="ui error message"></div>
            <!--下面代码的注释嵌套,是在静态页面中不会显示,但却可以被thymeleaf所识别-->
            <!--/*/
            <div class="ui negative message" th:if="${#fields.hasErrors('name')}">
                <i class="close icon"></i>
                <div class="header">操作失败</div>
                <p th:errors="*{name}">提交信息不合规</p>
            </div>
             /*/-->

            <div class="ui right aligned container">
                <button type="button" class="ui button" onclick="window.history.go(-1)">返回</button>
                <button class="ui teal submit button">提交</button>
            </div>
        </form>
    </div>
</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值