primefaces ライブラリが提供する動的列機能を使用しています。また、入れ子になったプロパティ (bean.city.address など) があるため、これに対処するカスタム BeanElResolver を作成しました。
public class ExtendedBeanELResolver extends BeanELResolver {
@Override
public Object getValue(ELContext context, Object base, Object property)
throws NullPointerException, PropertyNotFoundException, ELException
{
if (property == null || base == null || base instanceof ResourceBundle || base instanceof Map || base instanceof Collection) {
return null;
}
String propertyString = property.toString();
if (propertyString.contains(".")) {
Object value = base;
for (String propertyPart : propertyString.split("\\.")) {
value = super.getValue(context, value, propertyPart);
}
return value;
}
else {
return super.getValue(context, base, property);
}
}
Bean プロパティに対しては正常に動作しますが、ページがレンダリングされると、Bean プロパティではない Primefaces の一部の画像に対して PropertyNotFound Exception が発生します。
Servlet failed with an Exception -javax.el.PropertyNotFoundException: The class 'org.primefaces.application.PrimeResourceHandler' does not have the property 'primefaces- aristo:images/ui-bg_highlight-soft_100_c4c4c4_1x100.png'.
これは、BeanELResolver クラスを拡張し、あらゆる種類のプロパティを処理するデフォルトの ELResolver を何らかの形でオーバーライドしたためだと思います。CompositeELResolver クラスを作成して、他のタイプのプロパティも処理しようとしましたが、方法がわかりません。何か案は?