Interface Page

  • All Superinterfaces:
    PageLifecycleCallbackHub
    All Known Implementing Classes:
    PageImpl

    public interface Page
    extends PageLifecycleCallbackHub
    Represents a unique page within the application. Pages are part of the internal structure of a Tapestry application; end developers who refer to "page" are really referring to the root component of the actual page. Starting in release 5.2, the nature of pages changed considerably. Pages are no longer pooled instances. Instead, pages are shared instances (per locale) but all internal mutable state is stored inside PerthreadManager. Page construction time is considered to extend past the page loaded callback. This is not quite perfect from a threading point-of-view (arguably, even write-once-read-many fields should be protected by synchronized blocks or other mechanisms). At best, we can be assured that the entire page construction phase is protected by a single synchronized block (but not on the page itself). An ideal system would build the page bottom to top so that all assignments could take place in constructors, assigning to final fields. Maybe some day. The Page object is never visible to end-user code, though it exposes an interface (PageLifecycleCallbackHub that is).