一、所有注解
二、页面注解1、viewModel="@id(name) @init(expression)"
explanation:用于设置ViewModel
◆ 一个拥有apply="org.zkoss.bind.BindComposer"属性的组件可以使用这个注解,如果没有这个注解,那么这个组件将会被设置到一个composer上。
◆ expression:如果它被赋予一个Class,那么这个Class将创建一个ViewModel实例2、comp-attribute="@load(expression)"
explanation:单向绑定。用来加载属性的表达式
◆ 用户可以在表达式中指定绑定条件,通过参数before和after来设定。例如@load(vm.filter,after='myCommand'),这表示Binder会在执行完command方法myCommand之后加载这个属性
◆可以指定多个command
3、comp-attribute="@save(expression)"
explanation:单向绑定。保存组件的属性值到ViewModel属性中的表达式。
◆ 用户可以在表达式中指定绑定条件,通过参数before和after来设定。例如:@save(vm.filter,before='myCommand'),这表示Binder会在执行command方法myCommand之前保存这个属性到ViewModel
4、comp-attribute="@bind(expression)"
explanation:双向绑定。在组件的属性和ViewModel的属性之间实现双向绑定,它不支持条件绑定,也就是说在绑定时不能使用条件。
◆ 它等同于@load(expression)@save(expression)
◆ 如果组件的属性不支持@save的话,Binder将会自动忽略它 ◆ 例子:对于表达式e.f.g.h,如果任何一个通知说e.f.g.h、e.f.g、e.f或者e被改变了,那么组件的属性将会被重新加载
5、@converter(expression, arg = arg-expression)
explanation:为绑定提供一个转换器conveter
◆ 如果expression是一个ZK提供的conveter,那么它将会直接被使用
◆ 如果expression是一串字符,那么它将会从ViewModel中查找相应的getConveter方法,方法的名字为get+expression返回值为Conveter。
6、comp-event="@command(expression, arg =another-expression)"
explanation:绑定到相应的事件command方法
◆ expression必须是ViewModel中的一个command方法的名字
◆ 事件被触发时,它将会按照ZK Bind Lifecycle来执行这个command方法
三、ViewModel注解
1、@NotifyChange on setter
explanation:通知(notify)Binder该属性的值被改变
◆ 当调用了属性的setter方法之后,它将会通知(notify)Binder该属性的值被改变了。它是默认开启的,在属性的setter方法上你可以省略不写这个注解
2、@NotifyChange on command method
explanation:用于command方法上
◆ @NotifyChange(expression)、@NotifyChange({expression1,expression2,……})
3、@NotifyChangeDisabled on setter
explanation:使setter方法默认开启的@NotifyChange关闭
4、@Command('commanName')
explanation:commandName是可选的,如果不指定的话,command方法的名字默认就是它所注解的方法的名字
四、参数注解
1、@BindingParam(“keyString”)
描述:传递command方法的参数
功能:Binder可以通过@BindingParam注解中指定的字符串来获取ZUL页面上绑定的内容2、@QueryParam("keyString")
描述:传递一个方法的参数,这个方法可以是一个command方法,也可以是一个@Init方法。
功能:Binder可以通过@QueryParam中指定的字符串在HTTP请求中得到传递到ViewModel中的参数3、@HeaderParam("keyString")
描述:传递一个方法的参数,可以应用到@Init方法和command方法上。
功能:Binder可以通过@HeaderParam中指定的字符串在HTTP请求中得到传递到ViewModel中的参数。与@QueryParam类似
4、@CookieParam("keyString")
描述:传递一个方法的参数,可以应用到@Init方法和command方法上。
功能:从HTTP 请求cookie中获得参数。5、@ExecutionParam("keyString")
描述:传递一个方法的参数,可以应用到@Init方法和command方法上。
功能:获得当前Excursion设置的Attribute值。executionparam-inner.zul:
6、@ExecutionArgParam("keyString")
描述:传递一个方法的参数,可以应用到@Init方法和command方法上。
功能:获得当前Execution的argument7、@ScopeParam("keyString") 或 @Scope
Param(scopes=Scope.APPLICATION, value="keyString")
enum Scope{ COMPONET, SPACE, PAGE, DESKTOP, SESSION, APPLICATION, AUTO} //对应“组件,空间,页面,桌面,会话,应用,自动”
默认是AUTO,按COMPONENT-->SPACE-->PAGE-->DESKTOP-->SESSION-->APPLICATION的顺序一个个查找,直到找到不为空的值。
如果限定了Scope,则只会查找特定的Scope。
描述:传递一个方法的参数,可以应用到@Init方法和command方法上。
功能:在指定的Scope中查找参数。8、@SelectorParam("#componentId") 、 @SelectorParam("tagName") 、@SelectorParam(".className") 、@SelectorParam(":root") 、
@SelectorParam("window > button") 、@SelectorParam("button[ label= ' Submit ' ] ")
描述:传递一个方法的参数,可以应用到@Init方法和command方法上。
功能:从绑定的组件中获取参数。通过Selectors根据value值查找组件。【通过标签名"label",取得所有Label组件】
9、@ContextParam(ContextType.XXX)
描述:传递一个方法的参数,可以应用到@Init方法和command方法上。
功能:告诉绑定器传递指定类型的上下文对象。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
}
10、@Default(“defaultValue”)
描述:传递一个方法的参数,可以应用到@Init方法和command方法上。
功能:当绑定参数为空时使用指定的默认值。可以将该注解应用在其他参数相关注解之后,如果第一个注解取到空,则使用该注解指定的默认值。点击第一个按钮,arg2为100;点击第二个按钮,arg为3。
四、@Wire