SpringMVC 使用JSR-303进行校验Bean Validation-----消息中使用EL表达式

假设我们需要显示如:用户名[NAME]长度必须在[MIN]到[MAX]之间,此处大家可以看到,我们不想把一些数据写死,如NAME、MIN、MAX;此时我们可以使用EL表达式。

@Length(min = 5, max = 20, message = "{user.name.length.illegal}", groups = {First.class})  

错误消息:

user.name.length.illegal=用户名长度必须在{min}到{max}之间  

其中我们可以使用{验证注解的属性}得到这些值;如{min}得到@Length中的min值;其他的也是类似的。

到此,我们还是无法得到出错的那个输入值,如name=zhangsan。此时就需要EL表达式的支持,首先确定引入EL jar包且版本正确。然后使用如:

user.name.length.illegal=用户名[${validatedValue}]长度必须在520之间  

使用如EL表达式: validatedValuezhangsan使 v a l i d a t e d V a l u e 得 到 输 入 的 值 , 如 z h a n g s a n 。 当 然 我 们 还 可 以 使 用 如 {min > 1 ? ‘大于1’ : ‘小于等于1’},及在EL表达式中也能拿到如@Length的min等数据。

另外我们还可以拿到一个java.util.Formatter类型的formatter变量进行格式化:

${formatter.format("%04d", min)}  

实例

1.添加校验

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@GroupSequence({User.Adult.class, User.Other.class,User.class})
public class User {
    @NotNull(message="{user.id.null}")
    private String userName;
    //@Max(value=120,message="年龄最大不能查过120",groups = {Adult.class})

    private int age;
    @Email(message="邮箱格式错误",groups = {Other.class})
    private String email;
    @CannotHaveBlank(groups = {Adult.class})
    private String sex;
    @Valid
    @ConvertGroup(from=Adult.class,to=Other.class)
    private String password;
    @Length(min = 8,max = 11,message = "{user.phoneNum.length}")
    private String phoneNum;
    //分组
    public interface  Adult{}
    public interface Other{}
}

2.添加message信息

user.phoneNum.length=手机号码【${validatedValue}】长度必须在{min}{max}之间

3.测试

想了解更多java相关技术,请关注公众号“JavaEE那些事”

扫描下面二维码,更多技术资料等你来拿
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值