java 注解 spring el_Spring框架——SpringEL

数据验证

数据验证不应该被限定在Web层处理

Validator接口:

Spring提供Validator接口来进行对对象的验证

supports(Class)

判断validator是否能校验提供的class实例

validate(Obeject,org.springframework.validation.Errors)

校验给定的对象,有校验失败信息放入Errors对象

底层实现

@Component

public class UserValidator implements Validator {

//验证的是否为同一类型

@Override

public boolean supports(Class> arg0) {

return User.class.equals(arg0);

}

//将验证错误信息存在Errors集合里

//ValidationUtils 工具类

@Override

public void validate(Object arg0, Errors arg1) {

//验证是否为空

ValidationUtils.rejectIfEmpty(arg1, "id", "id can't be null", "id不能为空");

User u=(User)arg0;

ValidationUtils.rejectIfEmpty(arg1, "name", "name.empty", "用户名不能为空");

//验证日期

if(u.getBirthday().getTime()>new Date().getTime()){

arg1.rejectValue("birthday", "birthday.wrong", "出生日期不能晚于当前时间");

}

}

}

框架使用

SpringMVC还支持声明式验证@Controller输入

SpringEL

介绍

Spring表达式语言(简称SpEL)是一个支持查询和操作运行时对象导航图功能的强大的表达式语言

不直接依赖于Spring,可独立使用

底层实现:接口ExpressionParser负责解析表达式字符串

EL配置元数据

#{}

xml文件使用

java注解使用

@Component("computer")

public class Computer {

//@Value("#{引用的名字.属性}")

@Value("#{memory.memoryNum }")

private int memoryNum;

//@Value("#{引用的Bean的@Component("name")的name}")

@Value("#{memory }")

private Memory memory;

public int getMemoryNum() {

return memoryNum;

}

public void setMemoryNum(int memoryNum) {

this.memoryNum = memoryNum;

}

public Memory getMemory() {

return memory;

}

public void setMemory(Memory memory) {

this.memory = memory;

}

}

EL可以使用的场景

方法

EL可以调用一个对象的属性、方法,并将返回值注入给另一个对象的属性

@Value("#{'tea'.toUpperCase()}")

参数只能传常量,不能是变量

构造

EL可以调用new关键字,实现构造方法调用,实例化出对象

@Value("#{new int[]{1,2,3}}")

@Value("#{new 包名.类名()}")

操作符

EL支持大多数的算数运算符,@Value("#{3+4}")

关系运算符 @Value("#{1^1}")

逻辑运算符 @Value("#{5>3}")

三元运算符 @Value("#{1> 2? 0:1}")

集合

支持List @Value("#{A.list}")

Properties

Map @Value("#{A.map['1']}")

集合的选择

.?[] 设置筛选条件

@Value("#{A.list.?[li>1]}")

@Value("#{A.map.?[key=='1']}")

.^[] 获取第一个匹配项

.$[] 获取最后一个匹配项

集合的投影

.![] 选择特定属性

@Value("#{A.students.![name]}")

选择和投影可以结合使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值