0

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 クラスを作成して、他のタイプのプロパティも処理しようとしましたが、方法がわかりません。何か案は?

4

0 に答える 0