Interface Initiator

All Known Implementing Classes:
AnnotateDataBinderInit, Composition, GenericInitiator, ZScriptInitiator

public interface Initiator

Implemented by an initiator that will be invoked if it is specified in the init directive.

<?init class="MyInit"?>

Once specified, an instance is created and doInit(org.zkoss.zk.ui.Page, java.util.Map) is called before the page is evaluated.

If you'd like to intercept other activity, you could implement InitiatorExt too. Then, InitiatorExt.doAfterCompose(org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Component[]) is called after all components are created, and before any event is processed. In additions, InitiatorExt.doFinally() is called after the page has been evaluated. If an exception occurs, InitiatorExt.doCatch(java.lang.Throwable) is called.

A typical usage: starting a transaction in doInit, rolling back it in InitiatorExt.doCatch(java.lang.Throwable) and commit it in InitiatorExt.doFinally() (if InitiatorExt.doCatch(java.lang.Throwable) is not called).

See Also:

Method Summary
 void doInit(Page page, java.util.Map<java.lang.String,java.lang.Object> args)
          Does the initializes before the page is evaluated.

Method Detail


void doInit(Page page,
            java.util.Map<java.lang.String,java.lang.Object> args)
            throws java.lang.Exception
Does the initializes before the page is evaluated.

Note: when it is called, Page.getDesktop(), Page.getId() and Page.getTitle() all return null, since the page is not initialized yet. To get the current desktop, you have to use Execution.getDesktop() (from Executions.getCurrent()) instead. On the other hand, you can set the page's ID, title or style in this method (to override the declarations in the page definition) by Page.setId(java.lang.String), Page.setTitle(java.lang.String) and Page.setStyle(java.lang.String). In additions, Page.getRequestPath() and Page.getAttribute(java.lang.String, int) are all available.

page - the page being evaluated
args - a map of arguments. Prior to 3.6.2, it is an array. To upgrade, use args.get("arg0") instead of args[0], args.get("arg1") instead of args[1] and so on. Of course, it is better to have a more meaningful name for each argument. If no argument is specified, args is an empty map (never null).

Copyright © 2005-2011 Potix Corporation. All Rights Reserved. Logo