JSF:如何从 facelet 中抛出异常
JSF: How to throw an exception from within a facelet
有没有办法从 facelet 中抛出异常?背景:我有一个使用自定义转换器作为参数的组件。所以我称该组件为
@Named
@RequestScoped
public class CustomConverter implements Converter<String>
...
...
<ui:param
name="pConverter"
value="#{customConverter}" />
...
但是当参数值有错别字时,例如
...
<ui:param
name="pConverter"
value="#{custoMConverter}" /> <!-- custoMConverter instead of customConverter -->
...
转换器因此不工作,但没有抛出异常。现在,如果在这种情况下转换器为空,我想从组件内部抛出异常。怎么做?
为什么一个不存在的元素根本不抛出异常?
<h:outputText value="#{fooBean.foo}" />
bean fooBean
不存在也不例外。为什么不呢?
提前致谢。
我找到了解决办法。
@Named
@ApplicationScoped
public class ApplicationBean {
public final void checkExistenceAndThrow(final Object o) {
if (Objects.isNull(o)) {
throw new NullPointerException();
}
}
}
然后在组件中检查转换器是否存在:
<h:outputText
value="#{applicationBean.checkExistenceAndThrow(pConverter)}"
style="display: none;" />
所以异常的抛出委托给了bean
有没有办法从 facelet 中抛出异常?背景:我有一个使用自定义转换器作为参数的组件。所以我称该组件为
@Named
@RequestScoped
public class CustomConverter implements Converter<String>
...
...
<ui:param
name="pConverter"
value="#{customConverter}" />
...
但是当参数值有错别字时,例如
...
<ui:param
name="pConverter"
value="#{custoMConverter}" /> <!-- custoMConverter instead of customConverter -->
...
转换器因此不工作,但没有抛出异常。现在,如果在这种情况下转换器为空,我想从组件内部抛出异常。怎么做?
为什么一个不存在的元素根本不抛出异常?
<h:outputText value="#{fooBean.foo}" />
bean fooBean
不存在也不例外。为什么不呢?
提前致谢。
我找到了解决办法。
@Named
@ApplicationScoped
public class ApplicationBean {
public final void checkExistenceAndThrow(final Object o) {
if (Objects.isNull(o)) {
throw new NullPointerException();
}
}
}
然后在组件中检查转换器是否存在:
<h:outputText
value="#{applicationBean.checkExistenceAndThrow(pConverter)}"
style="display: none;" />
所以异常的抛出委托给了bean