下一代WEB开发模式Tapestry简介

豆豆网   技术应用频道   2006年11月25日  【字号: 收藏本文

本文详细介绍下一代WEB开发模式Tapestry简介

  Component元素是对HTML模板中引用的组件的定义,id属性名一定要与HTML模板中的jwcid一样,type指定了这个组件属于哪种类型,在本例中为Insert组件,Insert组件是Tapestry中的一个基本组件,它的作用是在HTML模板中插入指定的文本,待插入的文本的值由Insert的value属性来决定,在本例中,value属性的表达式值是userName。你这时候可能会觉得越看越糊涂:那为什么最后运行结果会是Jack呢?不要着急,关于这个我们马上就要详细地进行讲解。我们还是先看一下最后一个元素context-asset,这个元素是定义这个Page组件要用到的一些附加资源,比如图像、css格式文件等等之类的东西

  现在我们开始认真地讲一下<binding name="value" expression="userName"/>这个元素的含义,由于HTML模板嵌入的是一个Insert类型的组件,而Insert组件的功能是插入一段文本到HTML模板中去,对于本例而言,或许可以直接地指定要插入文本的内容为“Jack”,但对一个实际的应用来说,往往是要从数据库从取出用户的名称,然后将该名称插入到HTML模板中去,那么就不能直接指定文本的内容了,怎么办呢?我们马上想到的办法是:指定一个JAVA类,通过javaBean的属性方法来获得数据库中的用户名,就像jsp中的<jsp getProperty … />标签一样,不错,这的确是一个好方法,tapestry正是这样做的,因此<binding name="value" expression="userName"/>这个元素中的expression的值正是demo.Home这个JAVA类的一个属性,也就是说将demo.Home这个类的userName属性绑定到Insert组件的value属性中去,而我们的创始人Howard Lewis Ship先生并没有重头对这个绑定的功能进行设计,因为在软件开发中有一句著名的话:”不要重复地发明同一个轮子“,这个绑定功能是由另一个开放源码的工具完成地---- Object Graph Navigation Library,简称OGNL(关于OGNL具体可以参考http://www.ognl.org )。其内部真正的转换如下图所示:

责编:豆豆技术应用

正在加载评论...