2007/02/02

custom EL

Az van, hogy Java Content Repository lesz a megoldás. A POJO-k (amit JPA-val tudnék pertisztálni)sajnos túl merevek, nem lehet őket kiterjeszteni könnyen, míg a JCR node-jait lehet, mert nincsenek hardcode-olva bele a property nevek és típusok (persze veszítünk a típusossággal, dehát volt már nagyobb veszteségünk is).

Persze a JSF-es Expression Language alapból nem jön rá, hogy a #{name.property}-re egy JCR-es node.getProprty().getString()-et kéne kiadnia.

Viszont lazán lehet definiálni PropertyResolvert:

1. A PorpertyResolvert- leszármaztatom
2. a konstruktor megkap paraméterben egy PropertyResolvert(a defaultot), és minden metódust neki delegálok tovább. Pl.
public Object getValue(Object base, Object property) throws EvaluationException, PropertyNotFoundException {
Ha a base JCR-es Node, akkor castolom és kiszedem a propertyt. Ha nem, delegálom vissza akonstruktorba megkapott resolvernek az ügyet.
3. a faces-configba kell még egy ilyen:
<application>
        <property-resolver>com.valami.OwnPropertyResolver</property-resolver>
</application>


Mindez JSF 1.1-ben, ahol külön value resolver is van. 1.2-ben még egyszerűbb/szebb a dolog.

2 megjegyzés:

Kocka írta...

A JCR-rel kapcsolatos tapasztalataidrol majd meselj!

Meg nem vetettem be, csak prototype-olgatok vele.

elek írta...

OK, még én is még csak az elején járok, de nagyon ígéretesnek látszik.