@ContextParam
From Documentation
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 object like: Page or Desktop by applying annotation on parameters.
Example
Retrieve various context object in a ViewModel
@Init
public void init(@ContextParam(ContextType.APPLICATION_SCOPE) Map<?, ?> applicationScope,
@ContextParam(ContextType.SESSION_SCOPE) Map<?, ?> sessionScope,
@ContextParam(ContextType.DESKTOP_SCOPE) Map<?, ?> desktopScope,
@ContextParam(ContextType.PAGE_SCOPE) Map<?, ?> pageScope,
@ContextParam(ContextType.SPACE_SCOPE) Map<?, ?> spaceScope,
@ContextParam(ContextType.REQUEST_SCOPE) Map<?, ?> requestScope,
@ContextParam(ContextType.COMPONENT_SCOPE) Map<?, ?> componentScope,
@ContextParam(ContextType.EXECUTION) Execution execution,
@ContextParam(ContextType.COMPONENT) Component component,
@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) {..}
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) {
}
}
- In above example, the variable component is a Button object and view is a Vbox object.
Version History
Version | Date | Content |
---|---|---|
6.0.0 | February 2012 | The MVVM was introduced. |