Package org.zkoss.zk.ui.util

## Interface Initiator

- All Known Implementing Classes:
    `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<java.lang.String, java.lang.Object>)` 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).

  Author:
    tomyeh
  See Also:
    `InitiatorExt`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `doInit​(Page page, java.util.Map<java.lang.String,​java.lang.Object> args)` | Does the initializes before the page is evaluated.

- - ### Method Detail

    - #### doInit

          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.

      Parameters:
        `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).
      Throws:
        `java.lang.Exception`