使用EL在空属性上快速失败的最简单方法?

时间:2012-03-29 02:33:46

标签: java web-applications attributes jstl el

当EL调用什么都不返回时,是否可以强制发生异常?

我喜欢EL提供的方便的$ {...}符号,但是我希望每次调用 pageContext.findAttribute(...)(这就是EL基本上做的IIRC)如果没有属性(或包含空字符串的属性),则抛出异常。

我可以继续使用EL还是应该使用别的东西?

1 个答案:

答案 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);