http://jakarta.apache.org/tapestry/3.0.3/doc/DevelopersGuide/DevelopersGuide.html第三章第一段
Tapestry Components 组件
参数和绑定
在web程序中,组件被设计用来一起工作,显示页面的过程大致上是把源注入到组件中,并做预处理,并最终把信息显示出来。
每一个组件都有一些特定的参数,参数有一个名称,类别和必须或者可选。
组件参数看起来和JavaBeans的参数有些类似,其实这并不完全正确,JavaBeans properties是set-and-forget。
参数定义了它需要值的类型,值通过被称为blinding的特殊对象提供。binding是组件和参数值之间的桥梁,给组件提供需要的值。这样做的原始允许Pages和在Page中的组件共享许多并发的session。
当一个组件的参数需要值时,它必须获得正确的binding,实现IBinding接口的对象实例,并调用方法拿到返回值赋值给参数。
Tapestry提供了自动获取参数值的方法。这里有两种bindings:static and dynamic。Static bindings 是只读的;提供给binding的值是在组件规范中定义的。
Dynamic bindings 更流行和有用。一个动态绑定用JavaBeans的属性名称来获得值来给组件参数赋值。事实上,动态绑定用参数路径 property paths,允许绑定一个路径通过正确的OGNL语言
Property paths 是一串参数名称,用.分隔。如visit.userName 等价于java代码getVisit().getUserName()