May 24, 2011

Ενεργοποίηση του disclosureListener σε showDetailItem

Αφορμή για το άρθρο ήταν η παρατήρηση της συμπεριφοράς πως οι disclosureListeners που είχα σε δυο tabs σε μια σελίδα ADF ενεργοποιούνταν ταυτόχρονα, ανεξάρτητα σε ποιο tab είχε γίνει click. Όπως αναγράφει και το documentation του showDetailItem για το τι συμβαίνει onClick στην πλευρά του server:

"On server: the server disclosure event is kicked off to set disclosed to true on item 2 if this first server event is not canceled, another server disclosure event gets kicked off to set disclosed to false for item 1 if neither server event is canceled, the new states get rendered and the user will see the newly disclosed states on the client otherwise, the client looks the same as it was before"

Συνεπώς και δυο disclosureListeners (ενεργό και ανενεργό tab) εκτελούνται. Η λύση; H διευκρίνηση στο backing bean method για το αν ενεργοποιείται το tab, με την μέθοδο isExpanded() ώστε να εκτελεστεί η κατάλληλη business function.

public void prepareSomething(DisclosureEvent disclosureEvent) {
if (disclosureEvent.isExpanded()) {
...
}
}

No comments: