当EL调用什么都不返回时,是否可以强制发生异常?
我喜欢EL提供的方便的$ {...}符号,但是我希望每次调用 pageContext.findAttribute(...)(这就是EL基本上做的IIRC)如果没有属性(或包含空字符串的属性),则抛出异常。
我可以继续使用EL还是应该使用别的东西?
答案 0 :(得分:1)
一种选择是创建自己的ELResolver
。您可以延长ScopedAttributeELResolver
并覆盖getValue
:
public Object getValue(ELContext context, Object base, Object property) {
Object value = super.getValue(context, base, property);
if (context.isPropertyResolved() && (value == null)) {
throw new PropertyNotFoundException("Scoped attribute not found");
}
return value;
}
要注册解析器,请创建ServletContextListener
并在contextInitialized
中执行以下操作:
JspFactory.getDefaultFactory().getJspApplicationContext(sce).addELResolver(resolver);