您的位置:首页 > 编程语言 > Java开发

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

2018-02-24 16:46 309 查看
假设我们需要显示如:用户名[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}]长度必须在5到20之间


使用如EL表达式:validatedValue得到输入的值,如zhangsan。当然我们还可以使用如validatedValue得到输入的值,如zhangsan。当然我们还可以使用如{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.测试

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  el表达式