#jsf #facelets #jsf-2.3
Вопрос:
Есть ли способ создать исключение из facelet? Предыстория: У меня есть компонент, использующий в качестве параметра настроенный конвертер. Поэтому я называю компонент как
@Named @RequestScoped public class CustomConverter implements Converterlt;Stringgt; ...
... lt;ui:param name="pConverter" value="#{customConverter}" /gt; ...
Но когда в значении параметра есть опечатка, например
... lt;ui:param name="pConverter" value="#{custoMConverter}" /gt; lt;!-- custoMConverter instead of customConverter --gt; ...
следовательно, преобразователь не работает, но никаких исключений не возникает. Теперь я хотел бы создать исключение из компонента, если в таком случае конвертер пуст. Как это сделать?
Почему несуществующий элемент вообще не создает исключения?
lt;h:outputText value="#{fooBean.foo}" /gt;
Нет никаких исключений, если боб fooBean
не существует. Почему нет?
Заранее спасибо.
Ответ №1:
Я нашел решение.
@Named @ApplicationScoped public class ApplicationBean { public final void checkExistenceAndThrow(final Object o) { if (Objects.isNull(o)) { throw new NullPointerException(); } } }
Затем в компоненте проверьте наличие преобразователя:
lt;h:outputText value="#{applicationBean.checkExistenceAndThrow(pConverter)}" style="display: none;" /gt;
Таким образом, создание исключения делегируется компоненту.