Самый простой способ быстрого отказа на пустом атрибуте с использованием EL? - PullRequest
0 голосов
/ 29 марта 2012

Можно ли вызвать исключение, если вызов EL ничего не возвращает?

Мне нравится удобная нотация $ {...}, которую предоставляет EL, но я бы хотел, чтобы каждый отдельный вызов pageContext.findAttribute (...) (это то, что EL в основном делает IIRC) для броска исключение не должно быть атрибута (или атрибута, содержащего пустую строку).

Могу ли я продолжать использовать EL или использовать что-то еще?

1 Ответ

1 голос
/ 29 марта 2012

Один из вариантов - создать свой собственный 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);
...