@ContextParam

Syntax

@ContextParam(ContextType.PAGE)

Enumeration of all context

enum ContextType {
    BIND_CONTEXT,   //BindContext instance
    BINDER,         //Binder instance
    TRIGGER_EVENT,  //Event that trigger the command (since 6.0.1)
    COMMAND_NAME,   //Command name (since 6.0.1)
    EXECUTION,      //Execution instance
    COMPONENT,      //Component instance of current binding
    SPACE_OWNER,    //IdSpance instance of spaceOwner of current component
    VIEW,           //the view component of binder
    PAGE,           //Page instance of current component
    DESKTOP,        //Desktop instance of current component
    SESSION,        //Session instance
    APPLICATION     //Application instance
}

Description

Target: A method's parameter (for initial and command methods)

Purpose: Tell binder to pass the context object with specified type.

The annotation is applied to initial (or command) method's parameter. Methods can get various ZK context objects like Page or Desktop by applying annotation on parameters.

Example

Retrieve various context object in a ViewModel

@Init
public void init(
    @ContextParam(ContextType.EXECUTION) Execution execution,
    @ContextParam(ContextType.COMPONENT) Component component,
    @ContextParam(ContextType.VIEW) Component view,
    @ContextParam(ContextType.SPACE_OWNER) IdSpace spaceOwner,
    @ContextParam(ContextType.PAGE) Page page,
    @ContextParam(ContextType.DESKTOP) Desktop desktop,
    @ContextParam(ContextType.SESSION) Session session,
    @ContextParam(ContextType.APPLICATION) WebApp application,
    @ContextParam(ContextType.BIND_CONTEXT) BindContext bindContext,
    @ContextParam(ContextType.BINDER) Binder binder) {

    // method body
}

The following is another example.

<vbox id="vbox" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('eg.ContextParamVM')">
    <button id="cmd" label="cmd" onClick="@command('cmd')"/>
</vbox>

A ViewModel used by above zul

public class ContextParamVM {
    @Command
    public void cmd(
        @ContextParam(ContextType.COMPONENT) Component component,
        @ContextParam(ContextType.VIEW) Component view) {

        // method body
    }
}
  • In above example, the variable component is a Button object and the view is a Vbox object.