<span jwcid="@Insert" value="ognl:t4start" />在上面的代码中,调用了Tapestry的官方组件Insert,value属性是Insert组件的参数之一。"@"符号用于区分jwcid是一个组件类型还是一个组件ID,如果是一个组件ID,tapestry将在HTML模板对应的页面规范中寻找对应该组件ID的组件调用配置。(亦可这样理解,"@"为官方组件,无"@"为自定义组件,自定义组件需要在“.page”文件中详细配置该组件的用法。)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="data: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="data:images/messageBoard/home.gif" width="16" var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);    height="16" align="absmi0"/>主页</a>&nbsp;&nbsp;
ddle" border="<a jwcid="@GenericLink" href="ognl:'mailto:' + item.email " disabled="ognl:item.email==null">
<img src="data: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="data: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中的组件都将共享这个代理。

Tapestry的使用相关推荐

  1. 表现层框架Struts/Tapestry/JSF架构比较 [转]

    http://www.jdon.com/artichect/sjt.htm Struts/Tapestry/JSF是目前J2EE表现层新老组合的框架技术.从诞生时间上看,Struts应该比较早,使用得 ...

  2. Tapestry IoC Decorator

    Advisor VS. Decorator Service Decoration is augmented with Service Advice. Advisor: 跟Decorator相似,且普通 ...

  3. 第三十八讲:tapestry Ajax 关联下拉选框(select)组件

    2019独角兽企业重金招聘Python工程师标准>>> 源码如下: AJAXSelect1.java /** * 项目名称:TapestryStart * 开发模式:Maven+Ta ...

  4. 第三十三讲:tapestry Ajax eventlink无刷新页面

    2019独角兽企业重金招聘Python工程师标准>>> tapestry的Ajax使用非常简单,Ajax的页面无刷新,刚好解决了eventlink.actionlink等组件无刷新, ...

  5. Tapestry框架概述

    Tapestry带来了真正的Java web应用程序OOP编程,摘自<深入浅出Tapestry>中的一句话.这本书也是我学习Tapestry的参考之一,其他参考资料如<Tapestr ...

  6. 第三十五讲:tapestry Ajax zone组件无黄色闪烁的背景

    2019独角兽企业重金招聘Python工程师标准>>> 实现方法很简单,在zone组件里加上t:update="show"就不会出现黄色背景了.源码如下: Zon ...

  7. 第八讲:tapestry组件

    2019独角兽企业重金招聘Python工程师标准>>> tapestry组件有不少,具体的使用方法可去官网了解,常用的组件会在以后的教程中讲到.这篇文章主要以pagelink为例,简 ...

  8. 第零讲.1 tapestry项目创建与运行

    2019独角兽企业重金招聘Python工程师标准>>> 1.在eclipse工程目录下创建项目: 第一次运行eclipse的时候会弹出选择工程项目存放地点,如我的存放路径D:\wor ...

  9. tapestry autocomplete 更改样式及定位

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://blog.csdn.net/sbfivwsll/archive/2009 ...

  10. Tapestry 和 JSF

    Tapestry和JSF 是相对struts 和Webwork 老MVC框架来说,相对更新一些的MVC框架. 转载于:https://www.cnblogs.com/wangFengyi/archiv ...

最新文章

  1. 【怎样写代码】工厂三兄弟之抽象工厂模式(二):解决方案
  2. 最快捷的阅读实训新闻
  3. java格式_java时间格式转换大全
  4. Xcode使用心得01:断点中断问题和调整编译目标[转]
  5. vue 设置proxyTable - pathRewrite无效
  6. java简单计算器课程设计_java仿windows简易计算器课程设计 源码+报告
  7. php5向下兼容php4吗,PHP5与PHP4的区别小议
  8. Jetbrain系列IDE设置
  9. 剑指Offer_27_字符串的排列
  10. LeetCode IPO
  11. 对sppnet网络的理解
  12. 计算机视觉可解释性——卷积神经网络中间层的可视化
  13. 加拿大:国家资助研究项目IRAP已自主研发区块链浏览器
  14. 飞思卡尔MC9S12系列单片机地址影射以及分页问题
  15. 微信公众号开启开发者模式
  16. python+untitest+request实现接口自动化测试
  17. 【scrapy】实战爬取前程无忧职位信息
  18. eclipse查看源码是提示Sourse not found怎么解决
  19. 谈谈PDF如何快速转成Word文档
  20. 天风非银: 券商结算基金的现状和潜力

热门文章

  1. No installations recognized 以及 nvm use切换node版本无效的解决办法
  2. 机器学习实战-54: 集成学习分类算法(ada-boost)
  3. 如何将录音m4a转换为mp3格式?
  4. Python数据处理(三)——美国西雅图自行车流量可视化
  5. 常见windows字体和MacOS字体分类主要有几种?
  6. 2022年最值得阅读的强化学习书籍
  7. mysqldump加速导入参数说明
  8. 【车牌识别】RGB颜色模型车牌识别【含GUI Matlab源码 888期】
  9. opj线性表Placing apples 题解
  10. 西电java实验报告 界面_西电计算机Java上机实验报告.docx