Tapestry的使用
<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>
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的使用相关推荐
- 表现层框架Struts/Tapestry/JSF架构比较 [转]
http://www.jdon.com/artichect/sjt.htm Struts/Tapestry/JSF是目前J2EE表现层新老组合的框架技术.从诞生时间上看,Struts应该比较早,使用得 ...
- Tapestry IoC Decorator
Advisor VS. Decorator Service Decoration is augmented with Service Advice. Advisor: 跟Decorator相似,且普通 ...
- 第三十八讲:tapestry Ajax 关联下拉选框(select)组件
2019独角兽企业重金招聘Python工程师标准>>> 源码如下: AJAXSelect1.java /** * 项目名称:TapestryStart * 开发模式:Maven+Ta ...
- 第三十三讲:tapestry Ajax eventlink无刷新页面
2019独角兽企业重金招聘Python工程师标准>>> tapestry的Ajax使用非常简单,Ajax的页面无刷新,刚好解决了eventlink.actionlink等组件无刷新, ...
- Tapestry框架概述
Tapestry带来了真正的Java web应用程序OOP编程,摘自<深入浅出Tapestry>中的一句话.这本书也是我学习Tapestry的参考之一,其他参考资料如<Tapestr ...
- 第三十五讲:tapestry Ajax zone组件无黄色闪烁的背景
2019独角兽企业重金招聘Python工程师标准>>> 实现方法很简单,在zone组件里加上t:update="show"就不会出现黄色背景了.源码如下: Zon ...
- 第八讲:tapestry组件
2019独角兽企业重金招聘Python工程师标准>>> tapestry组件有不少,具体的使用方法可去官网了解,常用的组件会在以后的教程中讲到.这篇文章主要以pagelink为例,简 ...
- 第零讲.1 tapestry项目创建与运行
2019独角兽企业重金招聘Python工程师标准>>> 1.在eclipse工程目录下创建项目: 第一次运行eclipse的时候会弹出选择工程项目存放地点,如我的存放路径D:\wor ...
- tapestry autocomplete 更改样式及定位
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://blog.csdn.net/sbfivwsll/archive/2009 ...
- Tapestry 和 JSF
Tapestry和JSF 是相对struts 和Webwork 老MVC框架来说,相对更新一些的MVC框架. 转载于:https://www.cnblogs.com/wangFengyi/archiv ...
最新文章
- 【怎样写代码】工厂三兄弟之抽象工厂模式(二):解决方案
- 最快捷的阅读实训新闻
- java格式_java时间格式转换大全
- Xcode使用心得01:断点中断问题和调整编译目标[转]
- vue 设置proxyTable - pathRewrite无效
- java简单计算器课程设计_java仿windows简易计算器课程设计 源码+报告
- php5向下兼容php4吗,PHP5与PHP4的区别小议
- Jetbrain系列IDE设置
- 剑指Offer_27_字符串的排列
- LeetCode IPO
- 对sppnet网络的理解
- 计算机视觉可解释性——卷积神经网络中间层的可视化
- 加拿大:国家资助研究项目IRAP已自主研发区块链浏览器
- 飞思卡尔MC9S12系列单片机地址影射以及分页问题
- 微信公众号开启开发者模式
- python+untitest+request实现接口自动化测试
- 【scrapy】实战爬取前程无忧职位信息
- eclipse查看源码是提示Sourse not found怎么解决
- 谈谈PDF如何快速转成Word文档
- 天风非银: 券商结算基金的现状和潜力
热门文章
- No installations recognized 以及 nvm use切换node版本无效的解决办法
- 机器学习实战-54: 集成学习分类算法(ada-boost)
- 如何将录音m4a转换为mp3格式?
- Python数据处理(三)——美国西雅图自行车流量可视化
- 常见windows字体和MacOS字体分类主要有几种?
- 2022年最值得阅读的强化学习书籍
- mysqldump加速导入参数说明
- 【车牌识别】RGB颜色模型车牌识别【含GUI Matlab源码 888期】
- opj线性表Placing apples 题解
- 西电java实验报告 界面_西电计算机Java上机实验报告.docx