Annotation Type Init

public @interface Init

Marker annotation to identify a initial method.
Only one (could be zero) initial method is allowed in a particular class. If you want binder to call super calss's initial method also, you have to set superclass() to true, and super class's initial method will be called first. You could annotate it on the type if the class doesn't has a init method but super-class has.

For example, in class hierarchy A(has @Init) <- B(has @Init, superclass true) <- C(no @Init) <- D (has @Init, superclass false). D is the last one.
If D is the view model, will call D.init only
If C is the view model, no method will be called
If B is the view model, will call A.init then B.init
If A is the view model, will call A.init

Exception: if superclass() was been set to true and your initial method is an overridden method to it's super's initial method, ex:
X.m1() <- Y.m1()
Binder will throw an exception due to the conflict of java language's overriding nature.

Parameter Binding, for convenience, initial method support several kinds of Parameter Annotations. Binder will weave it's context(Zul page annotation, Java EE Context) with method's parameters while invocation.
For example, you can wire @init('BlaBlaVM', a='b') to an initial method like:
@Init public void doInit(@BindingParam("a") String a)

See Also:
BindingParam, ExecutionParam, ExecutionArgParam, HeaderParam, CookieParam, QueryParam, ScopeParam, ContextParam, Default, AfterCompose

Optional Element Summary
 boolean superclass


public abstract boolean superclass

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