Tapestry中的组件及功能

A)Foreach组件:
首先,我们接触到的第一Tapestry组件是Foreach组件。Foreach是一个循环组件,它遍历source参数,并在表现其内容前更新value参数。这是Tapestry组件参数的至关重要特性:将一个属性与一个组件参数绑定,组件不仅读取被绑定的属性,而且更新属性。
Foreach组件使用<span>标签,当其表现(render)时,并不直接生成任何HTML代码。它仅仅是将其包含的HTML标签和包含的组件重复表现。

B)Insert组件:
我们可以在HTML模板中看见大量的Insert组件。这个组件很简单,就是实现out.print()的功能。
<span jwcid="@Insert" value="ognl:item.username"/>
我们刚刚提到,在Foreach组件每次循环遍历list的时候,把对象赋予item,现在我们就是取出item对象(MagMessage)中的username字段的值。这里我们使用了OGNL表达式。等同于:item.getUsername()。
在组件规范中,我们可以看到Insert组件还有一个参数raw,该参数是boolean类型,其默认值为false。如果设为true,我们会看见,Insert组件会解析value参数的值中所包含的HTML标签。

C)Image组件:
<img jwcid="@Image" image="ognl:getAsset('image' + item.head)" alt="头像" src="images/messageBoard/1.gif" width="32" height="32" border="0"/>

Image组件是Tapestry标准组件,用于插入<img>标签,通过image参数生成标签src的属性。标签alt用来显示图片名称。src参数在这里存在的原因是为了方便美工,这样在美工就可以在“所见即所得”编辑器中(如Dreamware)对页面进行编辑。实际上该组件在运行时,会在page文件中寻找匹配image参数的图片路径动态替换src的路径。

详细请看Tapestry.pdf 书籍

D)Conditional组件
该组件只有一个参数condition,如果condition参数的值为true,就运行Conditional组件的<span>标签范围内的HTML模板,相反则不运行。
<span jwcid="@Conditional" condition='ognl:item.sex.equals("1")'>
先生
</span>
<span jwcid="@Conditional" condition='ognl:item.sex.equals("0")'>
女士
</span>
因为在数据库中,我们存储的性别类型为String类型的1和0,1代表“男”,0代表“女”,所以当我们取出item.sex字段的值后,需要把0和1转换为客户明白的词汇。

E)GenericLink组件
<a jwcid="@GenericLink" href="ognl:'http://' + item.homepage" disabled="ognl:item.homepage==null"><img src="images/messageBoard/home.gif" width="16" height="16" align="absmi0"/>主页</a>&nbsp;&nbsp;
ddle" border="<a jwcid="@GenericLink" href="ognl:'mailto:' + item.email " disabled="ognl:item.email==null"><img src="images/messageBoard/mail.gif" width="16" height="16" align="absmiddle" border="0"/>电子邮件</a>

这个组件有个href参数,其作用很明显,就是提供一个链接地址,从item.homepage和item.email中可以取出地址,只是我们需要在“主页”的链接地址前添加'http://',在“电子邮件”前添加'mailto:'。
Tapestry总共有6种标准的link组件:GenericLink, ActionLink, DirectLink,ServiceLink, ExternalLink和PageLink,在后续部分,我们会陆续介绍另外5种link组件。组件GenericLink通常用于跳转到应用程序范围以外的链接。
因为“主页”和“电子邮件”地址是用户在留言的时候自己填的,有可能有,也有可能没有。如果没有,就不应该“点击”,所以GenericLink有个参数disabled,该参数默认为false,当为true时,不能被“点击”。关于disabled参数,所有link足见都有,作用均相同。

F:Form组件基本用法:
对于Form组件,也许现在阐述的内容让你一头雾水,不过看后面几种组件的介绍,就会逐渐明白的。
<form jwcid="leaveWord@Form" delegate="ognl:beans.delegate">
表单提交必须使用DirectLink方式。在这里,监听(listener)方法可以有两种使用方式。第一种方式,将监听方法放在Form组件中声明,那么格式就是:
<form jwcid="leaveWord@Form" delegate="ognl:beans.delegate" listener="ognl:listeners.leaveWord">
这种方式的话,也就是说,凡是Form组件所包围的范围内,只要submitted,那么就会触发监听方法。
第二种方式,将监听方法放在Submit或者ImageSubmit组件中:
<span jwcid="@ImageSubmit" image="ognl:assets.submitImage" listener="ognl:listeners.leaveWord"><img src="images/button/tj.gif" width="50" height="18" border="0"/></span>
也就是我们现在使用的方式,这种方式的优点在于,如果Form中有多个submit按钮,我们希望不同的按钮实现不同的功能,那么这种方式就方便多了。
delegate="ognl:beans.delegate"这个参数用来连接Form和验证代理。在Form中的每一个FieldLabel和ValidField组件必须使用用一个验证代理。在MessageBoard.page文件中:
<bean name="delegate" class="com.cdmcs.tapestry.page.RegisterDelegate"/>
OGNL表达式beans.delegate解释一个验证代理。所有这个Form中的组件都将共享这个代理。

猜你喜欢

转载自blog.csdn.net/ethan__xu/article/details/81222814
今日推荐