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表达式: 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那些事”

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

猜你喜欢

转载自blog.csdn.net/forwujinwei/article/details/79363399
今日推荐