Apr 5, 2008

Πρόσβαση (access) στα custom properties των ADF BC

Ένα από τα ισχυρά χαρακτηριστικά των ADF BC είναι η δυνατότητα να ορίσουμε δηλωτικά (declarative) ιδιότητες (metadata) για κάποιο ApplicationModule, ViewObject, Entity ή ακόμα και attribute.

Η εκμετάλλευση των metadata (ή καλύτερα των custom properties όπως ονομάζονται στα ADF BC) είναι δουλειά που πρέπει να αναλάβουμε εμείς σύμφωνα με τις ανάγκες μας. Παραδείγματα χρήσης αυτών των στοιχείων έχουν να κάνουν με το να ορίσουμε ποιό θα είναι το όνομα του Oracle Sequence για το πρωτεύον κλειδί ενός entity, χαρακτηριστικά αποθήκευσης ενός πεδίου (για το παράδειγμα αν θα πρέπει να γίνει uppercase προτού αποθηκευτεί ή όχι) κ.ο.κ.

Το API που μας δίνεται προκειμένου να διαβάσουμε αυτές τις ιδιότητες είναι εξαιρετικά απλό: παίρνουμε το definition του object που μας ενδιαφέρει (ενός entity, ενός viewobject) και υπάρχει εκεί η δυνατότητα της εύρεσης της τιμής ενός property. Για παράδειγμα αν έχουμε ορίσει μια ιδιότητα "ORACLE_SEQUENCE_ID" σε ένα Entity, τότε μπορούμε να μάθουμε την τιμή του ως εξής:

getEntityDef().getProperty("ORACLE_SEQUENCE_ID");

Καμία φορά είναι ενδιαφέρον και από το user interface μας να έχουμε πρόσβαση σε αυτές τις ιδιότητες, προκειμένου να εμφανίσουμε ή να αποκρύψουμε στοιχεία με βάση ιδιαίτερους κανόνες. Έστω ότι έχουμε ορίσει πως ένα πεδίο (field) εμφανίζεται μόνο όταν πάρει μια ειδική τιμή (special value) που έχουμε ορίσει ως custom property. Τότε, μπορούμε να γράψουμε στην JSF σελίδα μας έναν αντίστοιχο κώδικα:

rendered="#{bindings.field.inputValue eq bindings.field.attributeDef.properties.specialValue}"

No comments: