1

Is there a way to throw an exception from within a facelet? Background: I've a component using a customised converter as parameter. So I call the component as

@Named
@RequestScoped
public class CustomConverter implements Converter<String>
...
...
<ui:param
  name="pConverter"
  value="#{customConverter}" />
...

But when there's a typo in the param value e.g.

...
<ui:param
  name="pConverter"
  value="#{custoMConverter}" /> <!-- custoMConverter instead of customConverter -->
...

the converter is consequently not working but no exception is thrown. Now I would like to throw an exception from within the component if the converter is empty in such a case. How to do that?

Why is a non existent element not throwing an exception at all?

<h:outputText value="#{fooBean.foo}" />

There's no exception if the bean fooBean doesn't exist. Why not?

Thanks in advance.

Toru
  • 905
  • 1
  • 9
  • 28

1 Answers1

0

I've found a solution.

@Named
@ApplicationScoped
public class ApplicationBean {
    public final void checkExistenceAndThrow(final Object o) {
        if (Objects.isNull(o)) {
            throw new NullPointerException();
        }
    }
}

Then in the component check for the existence of the converter:

<h:outputText
  value="#{applicationBean.checkExistenceAndThrow(pConverter)}"
  style="display: none;" />

So the throwing of the exception is delegated to the bean.

Toru
  • 905
  • 1
  • 9
  • 28