Θέλοντας να εκμεταλλευτούμε τις templating δυνατότητες του JHeadstart, το όνομα του iterator μπορεί να γίνει παράμετρος ώστε να κατασκευάσουμε ένα επαναχρησιμοποιήσιμο κουμπί. Υπάρχει λοιπόν μια ειδική μεταβλητή ονόματι ITERATOR που μπορούμε να χρησιμοποιήσουμε στα vm's μας ώστε να αναφερθούμε στα τρέχοντα δεδομένα. Έτσι, η κατασκευή ενός γενικού κουμπιού εξαγωγής στο excel μπορεί να μοιάζει ως εξής:
<af:commandButton text="#{nls['button.exporttoexcel']}" id="ExportToExcelButton" action="#{navBean.onExportToExcelClick}" rendered="#{#ITERATOR().estimatedRowCount > 0}" >
<af:setActionListener from="#{#ITERATOR().name}" to="#{requestScope.iteratorName}" />
</af:commandButton >
Κατά αυτόν τον τρόπο, παιρνάμε σαν παράμετρο το όνομα του iterator, το οποίο μπορούμε μετέπειτα να χρησιμοποιήσουμε για την παραγωγή του excel αρχείου.
2 comments:
Καλησπέρα,
φαίνεται καλή η προσέγγιση γιατί δουλεύει η ειδική αυτή μεταβλητή, αλλά πως περνιέται το όνομα του Iterator σε μια γενική συνάρτηση, π.χ. στο Application Module? Εδώ φαίνεται να σώζεται σε μια μεταβλητή σ' ένα session bean.
Kαι επίσης έστω μια συνάρτηση στο Application Module. Πως προσπελαύνει το όνομα αυτό και πως βρίσκει από το όνομα μετά τον Iterator?
Σωστά παρατηρείς πως σώζεται η τιμή του iterator σε ένα session bean. Από εκεί και πέρα, οι iterators συνδέονται με τα view objects και αποτελούν τη βάση που δουλεύουν τα data bindings. Οποιαδήποτε πρόσβαση σε δεδομένα σε μια σελίδα (όπως ορίζεται στο page definition της) γίνεται μέσω iterators, ποτέ απευθείας μέσω view objects.
Από ένα backing bean μπορείς να καλέσεις μια μέθοδο στο Application Module στο οποίο έχεις συνδεθεί όπως περιγράφεται στο http://download-uk.oracle.com/docs/html/B25947_01/bcservices005.htm
Post a Comment