Class PageImpl

  • All Implemented Interfaces:
    java.io.Serializable, ClassResolver, Scope, IdSpace, Page, PageCtrl
    Direct Known Subclasses:
    VolatilePage

    public class PageImpl
    extends AbstractPage
    implements java.io.Serializable
    An implementation of Page and PageCtrl. Refer to them for more details.

    Note: though PageImpl is serializable, it is designed to work with Web container to enable the serialization of sessions. It is not suggested to serialize and deserialize it directly since many fields might be lost.

    On the other hand, it is OK to serialize and deserialize Component.

    Implementation Notes:
    It is not thread-safe because it is protected by the spec: at most one thread can access a page and all its components at the same time.

    Author:
    tomyeh
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      PageImpl​(LanguageDefinition langdef, ComponentDefinitionMap compdefs, java.lang.String path, java.lang.String zslang)
      Constructs a page without page definition and richlet.
      PageImpl​(PageDefinition pgdef)
      Constructs a page by giving the page definition.
      PageImpl​(Page ref)
      Constructs a page with another page as instance
      PageImpl​(Richlet richlet, java.lang.String path)
      Constructs a page by specifying a richlet.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addAfterHeadTags​(java.lang.String tags)
      Adds the tags that will be generated inside the head element and after ZK's default tags.
      void addBeforeHeadTags​(java.lang.String tags)
      Adds the tags that will be generated inside the head element and before ZK's default tags.
      boolean addClassResolver​(ClassResolver resolver)
      Adds a class resolver to this page.
      void addDeferredZScript​(Component parent, ZScript zscript)
      Adds a deferred zscript.
      boolean addEventListener​(java.lang.String evtnm, EventListener<? extends Event> listener)
      Adds an event listener to specified event for all components in this page.
      boolean addFunctionMapper​(FunctionMapper mapper)
      Adds the function mapper in addition to the current one.
      boolean addScopeListener​(ScopeListener listener)
      Adds a listener to listen whether this scope is changed.
      void addTemplate​(java.lang.String name, Template template)
      Adds page scope template
      boolean addVariableResolver​(VariableResolver resolver)
      Adds a variable resolver that will be used to resolve a variable by Page.getXelVariable(java.lang.String).
      void destroy()
      Called when this page is about to be destroyed.
      java.lang.String getAfterHeadTags()
      Returns the tags that shall be generated inside the head element and after ZK's default tags (never null).
      java.lang.Object getAttribute​(java.lang.String name)
      Returns the value of the specified attribute associated with this page.
      java.lang.Object getAttribute​(java.lang.String name, boolean recurse)
      Returns the custom attribute associated with this object.
      java.lang.Object getAttribute​(java.lang.String name, int scope)
      Returns the value of the specified custom attribute in the specified scope.
      java.lang.Object getAttributeOrFellow​(java.lang.String name, boolean recurse)
      Returns the custom attribute associated with this page, or the fellow of this page; or null if no found.
      java.util.Map<java.lang.String,​java.lang.Object> getAttributes()
      Returns all custom attributes associated with this page.
      java.util.Map<java.lang.String,​java.lang.Object> getAttributes​(int scope)
      Returns all custom attributes of the specified scope.
      java.lang.Boolean getAutomaticTimeout()
      Returns whether to automatically redirect to the timeout URI.
      java.lang.String getBeforeHeadTags()
      Returns the tags that shall be generated inside the head element and before ZK's default tags (never null).
      java.lang.Boolean getCacheable()
      Returns if the client can cache the rendered result, or null to use the device default.
      ClassResolver getClassResolver()
      Internal used only
      ComponentDefinition getComponentDefinition​(java.lang.Class<? extends Component> cls, boolean recurse)
      Returns the component definition of the specified class, or null if not found.
      ComponentDefinition getComponentDefinition​(java.lang.String name, boolean recurse)
      Returns the component definition of the specified name, or null if not found.
      ComponentDefinitionMap getComponentDefinitionMap()
      Returns the map of component definitions (never null).
      java.lang.String getContentType()
      Returns the content type, or null to use the device default.
      Desktop getDesktop()
      Returns the desktop that this page belongs to.
      java.lang.String getDocType()
      Returns the doc type (<!
      java.lang.Iterable<EventListener<? extends Event>> getEventListeners​(java.lang.String evtnm)
      Returns an iterable collection of the event listeners for the given event.
      java.lang.Class<? extends ExpressionFactory> getExpressionFactoryClass()
      Returns the implementation of the expression factory that is used by this page, or null if Configuration.getExpressionFactoryClass() is used.
      java.lang.String getFirstLine()
      Returns the first line to be generated to the output, or null if nothing to generate.
      FunctionMapper getFunctionMapper()
      Returns the function mapper for resolving XEL functions, or null if not available.
      java.lang.String getId()
      Returns ID which is unique in the request (never null).
      Interpreter getInterpreter​(java.lang.String zslang)
      Returns the interpreter of the specified scripting language.
      LanguageDefinition getLanguageDefinition()
      Returns the language definition that this page belongs to (never null).
      java.util.Collection<Interpreter> getLoadedInterpreters()
      Returns all loaded interpreters.
      Component getOwner()
      Returns the owner of this page, or null if it is not owned by any component.
      java.lang.String getRequestPath()
      Returns the request path of this page, or "" if not available.
      java.util.Collection<java.lang.Object[]> getResponseHeaders()
      Returns a readonly collection of response headers (never null).
      java.lang.String getRootAttributes()
      Returns the attributes of the root element declared in this page (never null).
      java.lang.String getStyle()
      Returns the CSS style of this page, or empty if not specified.
      Template getTemplate​(java.lang.String name)
      Gets page scope template by name
      java.lang.String getTitle()
      Returns the title of the desktop this page belongs to (and evaluate it if it contains an expression).
      java.lang.String getUuid()
      Returns UUID (universal unique ID) which is unique in the whole session.
      java.lang.String getViewport()
      Return the meta viewport of this page, or "auto" if not specified.
      java.lang.String getWidgetClass()
      Returns the widget class of this page, or null to use the device default.
      java.lang.Object getXelVariable​(java.lang.String name)
      Returns a variable that is visible to XEL expressions.
      java.lang.Object getXelVariable​(XelContext ctx, java.lang.Object base, java.lang.Object name, boolean ignoreExec)
      Returns a variable that is visible to XEL expressions.
      java.lang.Class<?> getZScriptClass​(java.lang.String clsnm)
      Returns the class of the specified name by searching the classes defined in the loaded interpreters (Page.getLoadedInterpreters()).
      Function getZScriptFunction​(java.lang.String name, java.lang.Class[] argTypes)
      Returns the function of the specified name by searching the loaded interpreters.
      Function getZScriptFunction​(Component comp, java.lang.String name, java.lang.Class[] argTypes)
      Returns the function of the specified name by searching the logical scope of the specified component in all the loaded interpreters.
      java.lang.String getZScriptLanguage()
      Returns the default scripting language which is assumed when a zscript element doesn't specify any language.
      java.lang.Object getZScriptVariable​(java.lang.String name)
      Returns the value of the variable of the specified name by searching the loaded interpreters, if any.
      java.lang.Object getZScriptVariable​(Component comp, java.lang.String name)
      Returns the value of the variable of the specified name by searching the logical scope of the specified component in all the loaded interpreters, if any.
      boolean hasAttribute​(java.lang.String name)
      Returns if an attribute exists.
      boolean hasAttribute​(java.lang.String name, boolean recurse)
      Returns if a custom attribute is associated with this object.
      boolean hasAttribute​(java.lang.String name, int scope)
      Returns if an attribute exists.
      boolean hasAttributeOrFellow​(java.lang.String name, boolean recurse)
      Returns if a custom attribute is associated with this page, or a fellow of this page.
      boolean hasFunctionMapper​(FunctionMapper mapper)
      Returns if the specified function mapper has been registered
      boolean hasVariableResolver​(VariableResolver resolver)
      Returns if the specified variable resolver has been registered
      protected void init()
      Initialized the page when constructed or deserialized.
      void init​(PageConfig config)
      Initializes this page by assigning the info provided by the specified PageConfig, and then adds it to a desktop (by use of Execution.getDesktop()).
      void interpret​(java.lang.String zslang, java.lang.String script, Scope scope)
      Interprets a script in the specified scripting language in the context of the specified scope.
      void invalidate()
      Invalidates this page to cause all components to redraw.
      boolean isAlive()
      Returns whether the desktop is still alive.
      boolean isComplete()
      Returns if this page is a complete page.
      boolean isListenerAvailable​(java.lang.String evtnm)
      Returns whether the event listener is available.
      void preInit()
      Pre-initializes this page.
      void redraw​(java.io.Writer out)
      Redraws the whole page into the specified output.
      java.lang.Object removeAttribute​(java.lang.String name)
      Removes the specified attribute custom associated with the page.
      java.lang.Object removeAttribute​(java.lang.String name, boolean recurse)
      Removes the custom attribute associated with this scope.
      java.lang.Object removeAttribute​(java.lang.String name, int scope)
      Removes the specified custom attribute in the specified scope.
      boolean removeEventListener​(java.lang.String evtnm, EventListener<? extends Event> listener)
      Removes an event listener.
      boolean removeFunctionMapper​(FunctionMapper mapper)
      Removes a function mapper that was added by Page.addFunctionMapper(org.zkoss.xel.FunctionMapper).
      boolean removeScopeListener​(ScopeListener listener)
      Removes a change listener from this scope.
      void removeTemplate​(java.lang.String name)
      Removes page scope template
      boolean removeVariableResolver​(VariableResolver resolver)
      Removes a variable resolver that was added by Page.addVariableResolver(org.zkoss.xel.VariableResolver).
      java.lang.Class<?> resolveClass​(java.lang.String clsnm)
      Resolves the class of the specified name.
      void sessionDidActivate​(Desktop desktop)
      Notification that the session, which owns this page, has just been activated (a.k.a., deserialized).
      void sessionWillPassivate​(Desktop desktop)
      Notification that the session, which owns this page, is about to be passivated (a.k.a., serialized).
      java.lang.Object setAttribute​(java.lang.String name, java.lang.Object value)
      Sets the value of the specified custom attribute associated with this page.
      java.lang.Object setAttribute​(java.lang.String name, java.lang.Object value, boolean recurse)
      Sets the custom attribute associated with this scope, or the parent scope.
      java.lang.Object setAttribute​(java.lang.String name, java.lang.Object value, int scope)
      Sets the value of the specified custom attribute in the specified scope.
      void setAutomaticTimeout​(java.lang.Boolean autoTimeout)
      Sets whether to automatically redirect to the timeout URI.
      void setCacheable​(java.lang.Boolean cacheable)
      Sets if the client can cache the rendered result.
      void setComplete​(boolean complete)
      Sets if the page is a complete page.
      void setContentType​(java.lang.String contentType)
      Sets the content type.
      void setDocType​(java.lang.String docType)
      Sets the doc type (<!
      void setExpressionFactoryClass​(java.lang.Class<? extends ExpressionFactory> expfcls)
      Sets the implementation of the expression factory that is used by this page.
      void setFirstLine​(java.lang.String firstLine)
      Sets the first line to be generated to the output.
      void setId​(java.lang.String id)
      Sets the identifier of this page.
      void setOwner​(Component comp)
      Sets the owner of this page.
      void setRootAttributes​(java.lang.String rootAttrs)
      Set the attributes of the root element declared in this page
      void setStyle​(java.lang.String style)
      Sets the CSS style of this page.
      void setTitle​(java.lang.String title)
      Sets the title of the desktop this page belongs to (it might contain an expression).
      void setViewport​(java.lang.String viewport)
      Sets the viewport of this page.
      void setWidgetClass​(java.lang.String wgtcls)
      Sets the widget class of this page.
      void setZScriptLanguage​(java.lang.String zslang)
      Sets the default scripting language which will be assumed if a zscript element doesn't specify any language.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • PageImpl

        public PageImpl​(PageDefinition pgdef)
        Constructs a page by giving the page definition.

        Note: when a page is constructed, it doesn't belong to a desktop yet. Caller has to invoke init() to complete the creation of a page. Why two phase? Constructor could be called before execution is activated, but init() must be called in an execution.

        Also note that getId() and getTitle() are not ready until init() is called.

        Parameters:
        pgdef - the page definition (never null).
      • PageImpl

        public PageImpl​(LanguageDefinition langdef,
                        ComponentDefinitionMap compdefs,
                        java.lang.String path,
                        java.lang.String zslang)
        Constructs a page without page definition and richlet.
        Parameters:
        langdef - the language definition (never null)
        compdefs - the component definition map. If null, an empty map is assumed.
        path - the request path. If null, empty is assumed.
        zslang - the zscript language. If null, "Java" is assumed.
      • PageImpl

        public PageImpl​(Page ref)
        Constructs a page with another page as instance
        Since:
        6.0.0
      • PageImpl

        public PageImpl​(Richlet richlet,
                        java.lang.String path)
        Constructs a page by specifying a richlet.

        Note: when a page is constructed, it doesn't belong to a desktop yet. Caller has to invoke init() to complete the creation of a page.

        Also note that getId() and getTitle() are not ready until init() is called.

        Parameters:
        richlet - the richlet to serve this page.
        path - the request path, or null if not available
    • Method Detail

      • init

        protected void init()
        Initialized the page when constructed or deserialized.
      • getFunctionMapper

        public final FunctionMapper getFunctionMapper()
        Description copied from interface: Page
        Returns the function mapper for resolving XEL functions, or null if not available. The function mapper represents all function mappers being added.
        Specified by:
        getFunctionMapper in interface Page
      • addFunctionMapper

        public boolean addFunctionMapper​(FunctionMapper mapper)
        Description copied from interface: Page
        Adds the function mapper in addition to the current one.

        The new added function mapper has the higher priority. Page.getFunctionMapper() will return the new

        Specified by:
        addFunctionMapper in interface Page
        Parameters:
        mapper - the new function mapper (null to ignore).
      • getRequestPath

        public java.lang.String getRequestPath()
        Description copied from interface: Page
        Returns the request path of this page, or "" if not available.

        It is the same as the servlet path (javax.servlet.http.HttpServletRequest's getServletPath), if ZK is running at a servlet container.

        Note: Desktop.getRequestPath() returns the request path that causes the desktop to create. And, there might be multiple pages in the same desktop.

        Specified by:
        getRequestPath in interface Page
        See Also:
        Execution.getContextPath(), Desktop.getRequestPath()
      • getUuid

        public final java.lang.String getUuid()
        Description copied from interface: Page
        Returns UUID (universal unique ID) which is unique in the whole session. The UUID is generated automatically and immutable.

        It is mainly used for communication between client and server and you rarely need to access it.

        Specified by:
        getUuid in interface Page
      • getTitle

        public java.lang.String getTitle()
        Description copied from interface: Page
        Returns the title of the desktop this page belongs to (and evaluate it if it contains an expression).

        Default: "".

        Specified by:
        getTitle in interface Page
      • setTitle

        public void setTitle​(java.lang.String title)
        Description copied from interface: Page
        Sets the title of the desktop this page belongs to (it might contain an expression).
        Specified by:
        setTitle in interface Page
      • getStyle

        public java.lang.String getStyle()
        Description copied from interface: Page
        Returns the CSS style of this page, or empty if not specified.
        Specified by:
        getStyle in interface Page
      • setStyle

        public void setStyle​(java.lang.String style)
        Description copied from interface: Page
        Sets the CSS style of this page.

        Note: Unlike Page.setTitle(java.lang.String), you can change the style only in the lifecycle of the loading page.

        Specified by:
        setStyle in interface Page
      • getViewport

        public java.lang.String getViewport()
        Description copied from interface: Page
        Return the meta viewport of this page, or "auto" if not specified.

        Default: "auto".

        Specified by:
        getViewport in interface Page
      • setViewport

        public void setViewport​(java.lang.String viewport)
        Description copied from interface: Page
        Sets the viewport of this page.
        Specified by:
        setViewport in interface Page
      • getAttributes

        public java.util.Map<java.lang.String,​java.lang.Object> getAttributes​(int scope)
        Description copied from interface: Page
        Returns all custom attributes of the specified scope. You could reference them directly, or by use of componentScope, spaceScope, pageScope, requestScope and desktopScope in zscript and EL.

        If scope is Page.PAGE_SCOPE, it means custom attributes shared by components from the same page as this one's.

        If scope is Page.DESKTOP_SCOPE, it means custom attributes shared by components from the same desktops as this one's.

        Specified by:
        getAttributes in interface Page
        Parameters:
        scope - one of Page.APPLICATION_SCOPE, Page.SESSION_SCOPE, Page.PAGE_SCOPE, Page.REQUEST_SCOPE or Page.DESKTOP_SCOPE.
      • getAttributes

        public java.util.Map<java.lang.String,​java.lang.Object> getAttributes()
        Description copied from interface: Page
        Returns all custom attributes associated with this page.
        Specified by:
        getAttributes in interface Page
        Specified by:
        getAttributes in interface Scope
      • getAttribute

        public java.lang.Object getAttribute​(java.lang.String name)
        Description copied from interface: Page
        Returns the value of the specified attribute associated with this page.
        Specified by:
        getAttribute in interface Page
        Specified by:
        getAttribute in interface Scope
      • getAttribute

        public java.lang.Object getAttribute​(java.lang.String name,
                                             boolean recurse)
        Description copied from interface: Scope
        Returns the custom attribute associated with this object.
        Specified by:
        getAttribute in interface Scope
        recurse - whether to search its ancestor scope. If true and the current scope doen't define the attribute, it searches up its ancestor to see any of them has defined the specified attribute.
      • hasAttribute

        public boolean hasAttribute​(java.lang.String name,
                                    int scope)
        Description copied from interface: Page
        Returns if an attribute exists.

        Notice that null is a valid value, so you need this method to really know if an attribute is defined.

        Specified by:
        hasAttribute in interface Page
      • hasAttribute

        public boolean hasAttribute​(java.lang.String name)
        Description copied from interface: Page
        Returns if an attribute exists.

        Notice that null is a valid value, so you need this method to really know if an attribute is defined.

        Specified by:
        hasAttribute in interface Page
        Specified by:
        hasAttribute in interface Scope
      • hasAttribute

        public boolean hasAttribute​(java.lang.String name,
                                    boolean recurse)
        Description copied from interface: Scope
        Returns if a custom attribute is associated with this object.

        Notice that null is a valid value, so you can tell if an attribute is associated by examining the return value of Scope.getAttribute(java.lang.String).

        Specified by:
        hasAttribute in interface Scope
        recurse - whether to search its ancestor scope. If true and the current scope doen't define the attribute, it searches up its ancestor to see any of them has defined the specified attribute.
      • setAttribute

        public java.lang.Object setAttribute​(java.lang.String name,
                                             java.lang.Object value)
        Description copied from interface: Page
        Sets the value of the specified custom attribute associated with this page.
        Specified by:
        setAttribute in interface Page
        Specified by:
        setAttribute in interface Scope
        value - the value.
        Returns:
        the previous value associated with the attribute, if any
      • setAttribute

        public java.lang.Object setAttribute​(java.lang.String name,
                                             java.lang.Object value,
                                             boolean recurse)
        Description copied from interface: Scope
        Sets the custom attribute associated with this scope, or the parent scope.
        Specified by:
        setAttribute in interface Scope
        recurse - whether to look up the parent scope for the existence of the attribute.
        If recurse is true and the attribute is defined in one of its ancestor (including page), the attribute is replaced. Otherwise, it is the same as Scope.setAttribute(String,Object).
      • removeAttribute

        public java.lang.Object removeAttribute​(java.lang.String name)
        Description copied from interface: Page
        Removes the specified attribute custom associated with the page.
        Specified by:
        removeAttribute in interface Page
        Specified by:
        removeAttribute in interface Scope
        Returns:
        the previous value associated with the attribute, if any,
      • removeAttribute

        public java.lang.Object removeAttribute​(java.lang.String name,
                                                boolean recurse)
        Description copied from interface: Scope
        Removes the custom attribute associated with this scope.
        Specified by:
        removeAttribute in interface Scope
        recurse - whether to look up the parent scope for the existence of the attribute.
        If recurse is true and the attribute is defined in one of its ancestor (including page), the attribute is removed. Otherwise, it is the same as Scope.removeAttribute(String).
      • addScopeListener

        public boolean addScopeListener​(ScopeListener listener)
        Description copied from interface: Scope
        Adds a listener to listen whether this scope is changed. The listener is called when a custom attribute is added, removed, or the parent is changed.
        Specified by:
        addScopeListener in interface Scope
        Returns:
        weather the listener is added successfully. Note: if the resolver was added before, it won't be added again and this method returns false.
      • removeScopeListener

        public boolean removeScopeListener​(ScopeListener listener)
        Description copied from interface: Scope
        Removes a change listener from this scope.
        Specified by:
        removeScopeListener in interface Scope
        Returns:
        false if listener is not added before.
      • invalidate

        public void invalidate()
        Description copied from interface: Page
        Invalidates this page to cause all components to redraw.
        Specified by:
        invalidate in interface Page
      • resolveClass

        public java.lang.Class<?> resolveClass​(java.lang.String clsnm)
                                        throws java.lang.ClassNotFoundException
        Description copied from interface: Page
        Resolves the class of the specified name. It first looks at ClassResolver (registered with Page.addClassResolver(org.zkoss.lang.ClassResolver)). If not found, it looks at the current thread's class loader. And then, it looks for classes defined in any loaded interpreters (Page.getLoadedInterpreters()).
        Specified by:
        resolveClass in interface ClassResolver
        Specified by:
        resolveClass in interface Page
        Parameters:
        clsnm - the class name. It does not have to be a fully qualified name (i.e., it could have no package name), if the class is imported by use of the import directive (such as <?import class="com.foo.*"?>).
        Throws:
        java.lang.ClassNotFoundException - if the class is not found.
      • getZScriptFunction

        public Function getZScriptFunction​(java.lang.String name,
                                           java.lang.Class[] argTypes)
        Description copied from interface: Page
        Returns the function of the specified name by searching the loaded interpreters.
        Specified by:
        getZScriptFunction in interface Page
        Returns:
        the method, or null if not found
        See Also:
        Page.getLoadedInterpreters()
      • getZScriptFunction

        public Function getZScriptFunction​(Component comp,
                                           java.lang.String name,
                                           java.lang.Class[] argTypes)
        Description copied from interface: Page
        Returns the function of the specified name by searching the logical scope of the specified component in all the loaded interpreters.
        Specified by:
        getZScriptFunction in interface Page
        Parameters:
        comp - the component to start the search. If null, this method searches only the page's attributes. In other words, if comp is null, this method is the same as Page.getZScriptFunction(String, Class[]).
      • getZScriptVariable

        public java.lang.Object getZScriptVariable​(java.lang.String name)
        Description copied from interface: Page
        Returns the value of the variable of the specified name by searching the loaded interpreters, if any.
        Specified by:
        getZScriptVariable in interface Page
        Returns:
        the value of the variable, or null if not found
        See Also:
        Page.getLoadedInterpreters()
      • getZScriptVariable

        public java.lang.Object getZScriptVariable​(Component comp,
                                                   java.lang.String name)
        Description copied from interface: Page
        Returns the value of the variable of the specified name by searching the logical scope of the specified component in all the loaded interpreters, if any.
        Specified by:
        getZScriptVariable in interface Page
        Parameters:
        comp - the component as the context to look for the variable defined in an interpreter. If null, the context is assumed to be this page.
      • getXelVariable

        public java.lang.Object getXelVariable​(java.lang.String name)
        Description copied from interface: Page
        Returns a variable that is visible to XEL expressions. It is a shortcut of getXelVariable(null, null, name, false).

        This method is mainly used to access special variable, such as request parameters (if this page is requested by HTTP).

        Specified by:
        getXelVariable in interface Page
        See Also:
        Page.getXelVariable(XelContext, Object, Object, boolean)
      • getXelVariable

        public java.lang.Object getXelVariable​(XelContext ctx,
                                               java.lang.Object base,
                                               java.lang.Object name,
                                               boolean ignoreExec)
        Description copied from interface: Page
        Returns a variable that is visible to XEL expressions.

        Unlike Page.getXelVariable(String), this method can utilize VariableResolverX if you'd like to retrieve a property of another object.

        Specified by:
        getXelVariable in interface Page
        Parameters:
        ctx - the XEL context
        base - the base object. If null, it looks for a top-level variable. If not null, it looks for a member of the base object (such as getter).
        name - the property to retrieve.
        ignoreExec - whether to ignore the current execution (Execution.getVariableResolver(). If true, it invokes only the variable resolvers define in this page (Page.addVariableResolver(org.zkoss.xel.VariableResolver)). If false, it will first check the execution, so the implicit objects such as page and desktop will be resolved.
        See Also:
        Page.getXelVariable(String)
      • addVariableResolver

        public boolean addVariableResolver​(VariableResolver resolver)
        Description copied from interface: Page
        Adds a variable resolver that will be used to resolve a variable by Page.getXelVariable(java.lang.String).

        The new added variable resolver has the higher priority.

        Note: the variables resolver by the specified resolver are accessible to both zscript and EL expressions.

        Specified by:
        addVariableResolver in interface Page
        Returns:
        whether the resolver is added successfully. Note: if the resolver was added before, it won't be added again and this method returns false.
      • removeEventListener

        public boolean removeEventListener​(java.lang.String evtnm,
                                           EventListener<? extends Event> listener)
        Description copied from interface: Page
        Removes an event listener.
        Specified by:
        removeEventListener in interface Page
        Returns:
        whether the listener is removed; false if it was never added.
      • isComplete

        public boolean isComplete()
        Description copied from interface: Page
        Returns if this page is a complete page. By complete we mean the page has everything that the client expects. For example, for HTML browsers, the page will generate the HTML, HEAD and BODY tags.

        It is meaningful only if it is the top-level page (i.e., not included by the include component).

        Default: false. It means ZK loader will enclose the page content with HTML/HEAD/BODY if necessary (such as not included by other Servlet).

        If you have a page that has a complete HTML page and it is included by other page, you have to specify the complete flag to be true.

        Specified by:
        isComplete in interface Page
      • setComplete

        public void setComplete​(boolean complete)
        Description copied from interface: Page
        Sets if the page is a complete page.

        Default: false. It means a page is complete if and only if it is not included by other page.

        Specified by:
        setComplete in interface Page
        Parameters:
        complete - whether the page is complete. If true, this page is assumed to be complete no matter it is included or not. If false, this page is assumed to be complete if it is not included by other page.
        See Also:
        Page.isComplete()
      • destroy

        public void destroy()
        Description copied from interface: PageCtrl
        Called when this page is about to be destroyed. It is called by desktop, after removing it from the desktop.
        Specified by:
        destroy in interface PageCtrl
        Overrides:
        destroy in class AbstractPage
      • isAlive

        public boolean isAlive()
        Description copied from interface: Page
        Returns whether the desktop is still alive. It returns false once it is destroyed.
        Specified by:
        isAlive in interface Page
        See Also:
        PageCtrl.destroy()
      • getBeforeHeadTags

        public java.lang.String getBeforeHeadTags()
        Description copied from interface: PageCtrl
        Returns the tags that shall be generated inside the head element and before ZK's default tags (never null). For example, it might consist of <meta> and <link>.

        Since it is generated before ZK's default tags (such as CSS and JS), it cannot override ZK's default behaviors.

        Specified by:
        getBeforeHeadTags in interface PageCtrl
        See Also:
        PageCtrl.getAfterHeadTags()
      • getAfterHeadTags

        public java.lang.String getAfterHeadTags()
        Description copied from interface: PageCtrl
        Returns the tags that shall be generated inside the head element and after ZK's default tags (never null). For example, it might consist of <meta> and <link>.

        Since it is generated after ZK's default tags (such as CSS and JS), it could override ZK's default behaviors.

        Specified by:
        getAfterHeadTags in interface PageCtrl
        See Also:
        PageCtrl.getBeforeHeadTags()
      • addBeforeHeadTags

        public void addBeforeHeadTags​(java.lang.String tags)
        Description copied from interface: PageCtrl
        Adds the tags that will be generated inside the head element and before ZK's default tags. For example,
        ((PageCtrl)page).addBeforeHeadTags("<meta name=\"robots\" content=\"index,follow\"/>");

        You could specify the link, meta and script directive to have the similar result.

        Specified by:
        addBeforeHeadTags in interface PageCtrl
      • addAfterHeadTags

        public void addAfterHeadTags​(java.lang.String tags)
        Description copied from interface: PageCtrl
        Adds the tags that will be generated inside the head element and after ZK's default tags. For example,
        ((PageCtrl)page).addBeforeHeadTags("<meta name=\"robots\" content=\"index,follow\"/>");

        You could specify the link, meta and script directive to have the similar result.

        Specified by:
        addAfterHeadTags in interface PageCtrl
      • getResponseHeaders

        public java.util.Collection<java.lang.Object[]> getResponseHeaders()
        Description copied from interface: PageCtrl
        Returns a readonly collection of response headers (never null). The entry is a three-element object array. The first element is the header name. The second element of the array is the value which is an instance of Date or String (and never null). The third element indicates whether to add (rather than set) theader. It is an instance of Boolean (and never null).
        Specified by:
        getResponseHeaders in interface PageCtrl
      • getRootAttributes

        public java.lang.String getRootAttributes()
        Description copied from interface: PageCtrl
        Returns the attributes of the root element declared in this page (never null). An empty string is returned if no special attribute is declared.

        For HTML, the root element is the HTML element.

        Specified by:
        getRootAttributes in interface PageCtrl
      • setRootAttributes

        public void setRootAttributes​(java.lang.String rootAttrs)
        Description copied from interface: PageCtrl
        Set the attributes of the root element declared in this page

        Default: "".

        Specified by:
        setRootAttributes in interface PageCtrl
      • getContentType

        public java.lang.String getContentType()
        Description copied from interface: PageCtrl
        Returns the content type, or null to use the device default.
        Specified by:
        getContentType in interface PageCtrl
      • setContentType

        public void setContentType​(java.lang.String contentType)
        Description copied from interface: PageCtrl
        Sets the content type.
        Specified by:
        setContentType in interface PageCtrl
      • getWidgetClass

        public java.lang.String getWidgetClass()
        Description copied from interface: PageCtrl
        Returns the widget class of this page, or null to use the device default.
        Specified by:
        getWidgetClass in interface PageCtrl
      • setWidgetClass

        public void setWidgetClass​(java.lang.String wgtcls)
        Description copied from interface: PageCtrl
        Sets the widget class of this page.
        Specified by:
        setWidgetClass in interface PageCtrl
        Parameters:
        wgtcls - the widget class. The device default is assumed if wgtcls is null or empty.
      • getDocType

        public java.lang.String getDocType()
        Description copied from interface: PageCtrl
        Returns the doc type (<!DOCTYPE>), or null to use the device default.
        Specified by:
        getDocType in interface PageCtrl
      • setDocType

        public void setDocType​(java.lang.String docType)
        Description copied from interface: PageCtrl
        Sets the doc type (<!DOCTYPE>).

        Default: null (i.e., the device default)

        Specified by:
        setDocType in interface PageCtrl
      • getFirstLine

        public java.lang.String getFirstLine()
        Description copied from interface: PageCtrl
        Returns the first line to be generated to the output, or null if nothing to generate.

        For XML devices, it is usually the xml processing instruction:
        <?xml version="1.0" encoding="UTF-8"?>

        Specified by:
        getFirstLine in interface PageCtrl
      • setFirstLine

        public void setFirstLine​(java.lang.String firstLine)
        Description copied from interface: PageCtrl
        Sets the first line to be generated to the output.

        Default: null (i.e., nothing generated)

        Specified by:
        setFirstLine in interface PageCtrl
      • getCacheable

        public java.lang.Boolean getCacheable()
        Description copied from interface: PageCtrl
        Returns if the client can cache the rendered result, or null to use the device default.
        Specified by:
        getCacheable in interface PageCtrl
      • setCacheable

        public void setCacheable​(java.lang.Boolean cacheable)
        Description copied from interface: PageCtrl
        Sets if the client can cache the rendered result.

        Default: null (use the device default).

        Specified by:
        setCacheable in interface PageCtrl
      • setAutomaticTimeout

        public void setAutomaticTimeout​(java.lang.Boolean autoTimeout)
        Description copied from interface: PageCtrl
        Sets whether to automatically redirect to the timeout URI.

        Default: null (use the device default).

        If it is set to false, it means this page is redirected to the timeout URI when the use takes some action after timeout. In other words, nothing happens if the user does nothing. If it is set to true, it is redirected as soon as timeout, no matter the user takes any action.

        Refer to Configuration.setAutomaticTimeout(java.lang.String, boolean) for how to configure the device default (default: false).

        Specified by:
        setAutomaticTimeout in interface PageCtrl
      • interpret

        public void interpret​(java.lang.String zslang,
                              java.lang.String script,
                              Scope scope)
        Description copied from interface: Page
        Interprets a script in the specified scripting language in the context of the specified scope.
        Specified by:
        interpret in interface Page
        Parameters:
        zslang - the scripting language. If null, Page.getZScriptLanguage() is assumed.
        scope - the scope used as the context. Since a component is a scope, you can pass a component as the context. By context we mean the attribute of the scope, its space owner, spacer owner's space owner, page and desktop will be searched. If null, this page is assumed.
      • getInterpreter

        public Interpreter getInterpreter​(java.lang.String zslang)
        Description copied from interface: Page
        Returns the interpreter of the specified scripting language.

        The interpreter will be loaded and initialized, if it is not loaded yet.

        Specified by:
        getInterpreter in interface Page
        Parameters:
        zslang - the scripting language. If null, Page.getZScriptLanguage() is assumed.
      • getLoadedInterpreters

        public java.util.Collection<Interpreter> getLoadedInterpreters()
        Description copied from interface: Page
        Returns all loaded interpreters.
        Specified by:
        getLoadedInterpreters in interface Page
      • getZScriptLanguage

        public java.lang.String getZScriptLanguage()
        Description copied from interface: Page
        Returns the default scripting language which is assumed when a zscript element doesn't specify any language.
        Specified by:
        getZScriptLanguage in interface Page
        Returns:
        the default scripting language, say, Java. Never null.
      • addDeferredZScript

        public void addDeferredZScript​(Component parent,
                                       ZScript zscript)
        Description copied from interface: PageCtrl
        Adds a deferred zscript.
        Specified by:
        addDeferredZScript in interface PageCtrl
        Parameters:
        parent - the component that is the parent of zscript (in the ZUML page), or null if it belongs to the page.
        zscript - the zscript that shall be evaluated as late as when the interpreter of the same language is being loaded.
      • isListenerAvailable

        public boolean isListenerAvailable​(java.lang.String evtnm)
        Description copied from interface: Page
        Returns whether the event listener is available.
        Specified by:
        isListenerAvailable in interface Page
      • getOwner

        public final Component getOwner()
        Description copied from interface: PageCtrl
        Returns the owner of this page, or null if it is not owned by any component. A page is included by a component. We say it is owned by the component.

        Note: the owner, if not null, must implement Includer.

        Specified by:
        getOwner in interface PageCtrl
      • setOwner

        public final void setOwner​(Component comp)
        Description copied from interface: PageCtrl
        Sets the owner of this page.

        Called only internally

        Since 5.0.6, the owner must implement Includer.

        Specified by:
        setOwner in interface PageCtrl
      • sessionWillPassivate

        public void sessionWillPassivate​(Desktop desktop)
        Description copied from interface: PageCtrl
        Notification that the session, which owns this page, is about to be passivated (a.k.a., serialized).
        Specified by:
        sessionWillPassivate in interface PageCtrl
      • sessionDidActivate

        public void sessionDidActivate​(Desktop desktop)
        Description copied from interface: PageCtrl
        Notification that the session, which owns this page, has just been activated (a.k.a., deserialized).
        Specified by:
        sessionDidActivate in interface PageCtrl
      • getLanguageDefinition

        public LanguageDefinition getLanguageDefinition()
        Description copied from interface: Page
        Returns the language definition that this page belongs to (never null).
        Specified by:
        getLanguageDefinition in interface Page
      • addTemplate

        public void addTemplate​(java.lang.String name,
                                Template template)
        Description copied from interface: Page
        Adds page scope template
        Specified by:
        addTemplate in interface Page
      • removeTemplate

        public void removeTemplate​(java.lang.String name)
        Description copied from interface: Page
        Removes page scope template
        Specified by:
        removeTemplate in interface Page
      • getTemplate

        public Template getTemplate​(java.lang.String name)
        Description copied from interface: Page
        Gets page scope template by name
        Specified by:
        getTemplate in interface Page
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object