基本上是理解性翻译,英文好的可以直接去看此guide,我只是做了笔记,然后放到这里希望能对大家有所帮助。
新特性我也只是了解,没有具体应用(很想用:D),有理解错误的地方,希望大家原谅。
Tapestry4新特性(一)-default binding types
default binding types(默认的绑定类型)
每一个组件的参数都可以定义默认的绑定类型,如果一个绑定的参数没有前缀,将使用默认的绑定类型。
下面的代码实现同样的功能:
<ul element="ul" jwcid="@Foreach" source="ognl:items" value="ognl:item"> <li><span jwcid="@Insert" value="ognl:item.name"/> </ul>
<ul element="ul" jwcid="@Foreach" source="items" value="item"> <li><span jwcid="@Insert" value="item.name"/> </ul>
加粗的部分显示前后的变化,之所以可以这样定义,是因为Insert组件定义value参数的默认绑定类型为ongl.
注意:默认的绑定参数总是可以被显式的绑定声明覆盖掉。
如果没有定义默认的绑定参数,那么在html模板中定义的默认绑定参数为literal,页面定义文件里的默认绑定参数为ognl
修订:
从beta4版本开始,此特性已经被删除,
Beta4的change log:
Remove default-binding attribute from element(HLS)
但是“如果没有定义默认的绑定参数,那么在html模板中定义的默认绑定参数为literal,页面定义文件里的默认绑定参数为ognl”这个效果经测试依然存在。
怀念:
此段文字在beta3中存在,beta4后就删掉了!
Binding Type Defaults
Tapestry 4.0 introduces a new idea: default binding types. Each component parameter may define a default binding type (using the default-binding attribute of the <parameter> element).
If a binding reference does not have a prefix, the default binding type is used.
Because of this, the following two snippets are identical:
<ul element="ul" jwcid="@Foreach" source="ognl:items" value="ognl:item">
<li><span jwcid="@Insert" value="ognl:item.name"/>
</ul>
<ul element="ul" jwcid="@Foreach" source="items" value="item">
<li><span jwcid="@Insert" value="item.name"/>
</ul>
This works because the Insert component defines the default-binding for the value parameter to be "ognl". Likewise, the source and value parameters of the Foreach component are defined to be "ognl". However, the element parameter of the Foreach component has a binding type of "literal".
This is a decision made by the component author. If a particular parameter is (nearly) always bound using a particular binding type, then a default-binding may be set. The default binding can always be overriden with an explicit binding type prefix.
What about parameters that don't define a default binding type? The answer to this question (which includes all informal parameters), is that it depends on whether the parameter is bound in an HTML template, or in a page or component specification. In an HTML template, the default binding type is "literal". In a specification, the default binding type is "ognl".
Tapestry4新特性(二)-listener method
如果使用过tapestry的应该知道listener方法在4.0以前版本中的定义,如public void formSubmit(IRequestCycle cycle),方法必须有一个IRequestCycle参数。参数的取得方式如下:Object[] parameters = cycle.getServiceParameters();
在4.0中参数的取得可以通过以下两种方式:
1、调用IRequestCycle.getListenerParameters()方法,需要传入IRequestCycle实例作为参数。
2、按照参数的声明顺序依次定义为listener方法的参数。
第二种方法比较符合软件的设计思维,而且参数的类型在传入后保存,而不是想象中的统一String类型。
例如:
<a jwcid="@DirectLink" listener="doClick" parameters="{ objectId, index }"> . . . </a>
其中objectId为String类型,index为int,声明中使用了默认的参数绑定类型。
对应的方法声明如下
public void doClick(String objectId, int index)
{ . . . }
此为第二种方式,可见方法的定义符合自然习惯,当然你也可以通过传统的方法,如下所示: public void doClick(IRequestCycle cycle)
{ Object[] parameters = cycle.getListenerParameters();
String objectId = (String)parameters[0];
int index = ((Integer)parameters[1]).intValue(); . . . }
这种方式是为了向后兼容以前的版本,当然也适用那种参数数目不确定的情况。 Tapestry默认搜索以下的方法声明:
1、public void method(parameters)(页面的跳转 cycle.activate()如何实现?)
2、public void method(IRequestCycle cycle, parameters) (倾向于使用此方式)
3、public void method()(无需参数传递和页面跳转的情况,估计可能性不大)
4、public void method(IRequestCycle cycle)(传统方式)
不要试图通过参数的类型来映射listener方法,tapestry是根据参数的数目来确定方法的。
Tapestry4新特性(三)-Global Property Source(全局的消息属性配置)
消息属性配置听起来不是很舒服,暂时这样称呼好了,消息属性配置也就是通称的国际化配
置,通过配置一个properties文件使不同语言的浏览者看到对应语言的版本,一般
的使用如下,一个page页面,例如example.page,同目录下放一个
example.properties,在 example.html中使用<span key="key"/>来指定显示值,
中文可以使用example_zh_CN.properties来配置。看起来挺方便的,可
tapestry4.0以前的版本的国际化不支持全局的属性配置文件,必须每个页面定义
自己的,无法几个页面共享,但实际开发中,多页面共享属性配置是很常见的,
tapestry4.0中可以通过以下方式获得全局的属性配置文件:
创建一个跟你的项目全局配置文件,如yourApp.application,此文件在4.0以前的
版本中是必须的,4.0中如果没有必要配置,可以不需要此文件(扯远了),yourApp
是根据你在web.xml定义的,例如
<servlet>
<servlet-name>tapesty4</servlet-name>
<servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
那属性定义文件就应该是tapestry4.properties,这样在此文件中定义一个:test=
测试,在Home.html中使用< span key="test">test</span>,看到“测试”正确显示。
Tapestry4新特性(四)-源代码标注的异常处理
Tapestry本来提供的debug功能就十分强大,4.0版本中提供了更加详细的报错机制,可以显示错误的代码,并在报错的地方加亮标注,具体截图请看附件(谁能告诉我怎么将多余的照片删除呀)

Tapestry4新特性(五)-Friendly URLs
Tapestry4.0以前版本中的URL一直被人所诟病,当然现在已经有很多的解决方
案,4.0版本中已经对此做了改进,
因为现在的版本需要通过hivemind来配置,所以需要设置hivemind.xml中的一些属
性,具体配置如下:
<?xml version="1.0"?>
<module id="tapestry4" version="1.1.0">
<contribution configuration-id="tapestry.url.ServiceEncoders">
<page-service-encoder id="page" extension="html" service="page"/>
<direct-service-encoder id="direct" stateless-extension="direct"
stateful-extension="sdirect"/>
<asset-encoder id="asset" path="/assets/"/>
<extension-encoder id="extension" extension="svc" after="*"/>
</contribution>
</module>
同时web.xml中加入映射:
<servlet>
<servlet-name>tapestry4</servlet-name>
<servlet-class> org.apache.tapestry.ApplicationServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>tapestry4</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>tapestry4</servlet-name>
<url-pattern>*.direct</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>tapestry4</servlet-name>
<url-pattern>*.sdirect</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>tapestry4</servlet-name>
<url-pattern>/assets/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>tapestry4</servlet-name>
<url-pattern>*.svc</url-pattern>
</servlet-mapping>
如果希望首页的调用不是通过/app来映射,可以在web.xml中更改redirect:
<filter-name>redirect</filter-name>
<filter-class>org.apache.tapestry.RedirectFilter</filter-class>
<init-param>
<param-name>redirect-path</param-name>
<param-value>/Home.html</param-value>
</init-param>
</filter>
这样键入http://localhost:8080/tapestry4,系统导航到http://localhost:
8080/tapestry4/Home.html,
添加一个Page页面例如Test.page,在Home.html中加入<a href="#"
jwcid="@PageLink" page="Test">test</a>,
在生成的Home.html中生成的test的链接地址为:http://localhost:
8080/tapestry4/Test.html
Tapestry4新特性(六)-自动定位页面类文件
关于此特性的介绍请参考:http://jakarta.apache.org/tapestry/current/UsersGuide/page-class.html
说明:
通俗点说就是您可以不定义.page文件或者定义的.page文件中不指定class 属性,而让服务器自动根据.html文件的路径来寻找对应的类文件。
配置:
在.application的定义文件中添加: <meta key="org.apache.tapestry.page-class-packages" value="org.edynasty.pages"/> 这样如果在文档根目录下有个Home.html文件,你就可以将Home.java放到 org.edynasty.pages(实际开发中配置为您自己的包名)包中,tapestry自动根据 Home.hmtl构造org.edynasty.pages.Home来定位页面的类文件,当然您也可以在WEB -INF目录下放一个Home.page,不需要定义class属性,tapestry自动按照上边的原 理定位。
效果:
这样您可以不需要维护.page中的class属性,直接根据.html文件来写对应 的类文件。而且可以根据业务逻辑来定义目录结构,例如将 org.edynasty.pages.user定义为user相关的类,.html也就可以放到user目录下 边,目录结构如下:
user/ListUsers.html
user/EditUser.html
course/ListCourses.html
course/EditCourses.html
Home.html
Tapestry4新特性(七)-Application和Session范围对象的使用
关于此特性的介绍请参考:http://jakarta.apache.org/tapestry/UsersGuide/state.html
说明:
Application和Session范围的概念就不说了,T4以前的版本只可以分别指定一个对象,
以前版本的定义如下:
<property name="org.apache.tapestry.visit-class" value="your.package.Visit"/>
<property name="org.apache.tapestry.global-class" value="your.package.Global"/>,
T4中可以指定任意多的对象,而且默认的visit和global仍然可以使用。
配置:在hivemodule.xml的定义文件中添加:
<contribution configuration-id="tapestry.state.ApplicationObjects">
<state-object name="applicationUser" scope="application">
<create-instance class="org.edynasty.model.User"/>
</state-object>
<state-object name="sessionUser" scope="session">
<create-instance class="org.edynasty.model.User"/>
</state-object>
</contribution>
两个user分别对应Application和Session范围,在需要使用user的page中注入:
<inject property="applicationUser" type="state" object="applicationUser"/>
<inject property="sessionUser" type="state" object="sessionUser"/>,通过
getter和setter方法调用。
效果:怎么说呢,可以不需要在一个visit中定义N多属性,因为Session的创建需要资源,
只要操作一个visit的属性,就需要创建整个visit,分别定义之后,可以在需要存取时分别创建。
分享到:
相关推荐
基于openocd开源工具实现的C#桌面应用工具
精品-2025人工智能神经网络基本原理解析.pdf
施耐德ATV312变频器通过MCGS RTU通讯实现双机监控与控制的触摸屏集成解决方案,无PLC的施耐德ATV312变频器通讯示例:触摸屏控制监控两台变频器,功能多且省成本,改进型可调整步长 P&O MPPT(二区MPPT复现),光储系统MPPT 直流负载供电的单级离网光伏系统中,降压转器将太阳能光伏阵列和直流负载连接起来,同时确保最大功率点跟踪(MPPT) 和电池充电控制的良好运行。 在MPPT方面,提出了一种改进的自适应步长扰动观测(P&O)方法,以达到不同天气条件下太阳能光伏阵列的实际最大功率点(MPP),同时减少稳态振荡和功率损耗。 此外,电池充电控制侧使用三级充电控制器 (TSCC) 为铅酸电池站充电。 ,改进型P&O; 复现二区MPPT; 光储系统MPPT; 最大功率点跟踪(MPPT); 步长扰动观测; 降压转换器; 太阳能光伏阵列; 电池充电控制; 三级充电控制器(TSCC); 铅酸电池站。,改进型P&O MPPT技术,光储系统高效能量管理
redis学习脑图笔记
大学生创业项目源码
Spring Boot企业员工管理系统(包含万字论文+MYSQL)
对应博客地址:https://blog.csdn.net/u011561335/article/details/146312389
相关文章:https://blog.csdn.net/liu_23yanfeng/article/details/146319189
从春晚看科技技术-陈雄 - 公开版本.pptx
在计算机上安装制造装备物联及生产管理ERP系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,制造装备物联及生产管理ERP系统的有效运用可以帮助管理人员准确快速地处理信息。 制造装备物联及生产管理ERP系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现制造装备物联及生产管理ERP系统的功能。其中管理员管理用户,新闻公告。 制造装备物联及生产管理ERP系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,制造装备物联及生产管理ERP系统都可以轻松应对。 关键词:制造装备物联及生产管理ERP系统;SpringBoot框架,系统分析,数据库设计
传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,问卷信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大用户的需求,因此就应运而生出相应的问卷调查系统。 本问卷调查系统分为管理员还有用户两个权限,管理员可以管理用户的基本信息内容,可以管理新闻资讯信息以及新闻资讯的租赁信息,能够与用户进行相互交流等操作,用户可以查看问卷信息,可以查看新闻资讯以及查看管理员回复信息等操作。 该问卷调查系统采用的是WEB应用程序开发中最受欢迎的B/S三层结构模式,使用占用空间小但功能齐全的MySQL数据库进行数据的存储操作,系统开发技术使用到了JSP技术。该问卷调查系统能够解决许多传统手工操作的难题,比如数据查询耽误时间长,数据管理步骤繁琐等问题。总的来说,问卷调查系统性能稳定,功能较全,投入运行使用性价比很高。 关键词:问卷调查系统;MySQL数据库;SSM技术
VID20250317191237.mp4
西门子S7-1511 PLC PID控制阀门开度与模拟量转换——博途WinCC监控画面程序实践,西门子S7-1511 PLC PID控制阀门开度与模拟量转换——博途WinCC监控画面程序实践,matlab验证码识别系统,基于数字图像处理实现。 经过对图像的预处理、二值化、区域剪裁、数字定位、模板匹配法识别数字。 有gui界面和测试图像数据集。 ,核心关键词:Matlab验证码识别系统; 数字图像处理; 图像预处理; 二值化; 区域剪裁; 数字定位; 模板匹配法识别; GUI界面; 测试图像数据集。,基于Matlab的数字图像处理验证码识别系统
内容概要:本文提供了详细的 VMware 虚拟机安装指南,涵盖软件选择(Pro 和 Player 版区别)、安装步骤(适用于 Windows 和 Linux 主机系统)、虚拟机创建以及操作系统安装指导。详细介绍了配置虚拟机的各项关键设置,如资源分配、硬件参数定制、安装 VMware Tools 提升虚拟机性能和稳定性。并且列出了快照、克隆等高级功能的具体应用,还包括共享文件夹配置和几种常见错误的排除解决方案。 适合人群:初次接触虚拟化的用户和对虚拟环境搭建有一定兴趣的技术爱好者。 使用场景及目标:帮助用户快速部署自己的虚拟机,并掌握虚拟环境中常见的配置技巧,能够针对具体应用场景灵活地调整虚拟机的相关参数,提高工作效率,满足测试、学习、开发的需求。 其他说明:提供了一些安装过程可能遇到的问题及对应解决方案,在创建和维护过程中给予指导性的意见来确保用户的使用体验尽可能顺畅无阻,并给出了部分性能优化建议。
Matlab开发初学者视频教程,零基础入门,非常适合初学者。
质子交换膜燃料电池(PEMFC)Simulink模型:静态与动态模型分析及参数计算,基于Simulink的质子交换膜燃料电池模型:静态和动态模拟,计算输出和效率,cst仿真超表面 极化复用 ,核心关键词: 1. CST仿真 2. 超表面 3. 极化复用 以上信息以分号隔开,即为“CST仿真;超表面;极化复用”。,CST仿真超表面极化复用技术
PEMFC的Simulink静态与动态模型:输出电压、功率、效率等多维度性能计算指南,质子交换膜燃料电池Simulink模型:涵盖静态与动态特性,全面计算输出性能与效率,附参考公式与文献指南,C#运动控制系统源码。 雷赛运动控制卡控制系统。 像高川控制卡、高川控制器、或者固高运动控制卡以及正运动控制器、正运动控制卡可以用这个框架,自己替一下库文件等代码就可以。 功能丰富,注释多,非常适合新手学习,也可以做框架。 ,核心关键词:C#运动控制系统源码; 雷赛运动控制卡控制系统; 高川控制卡/高川控制器/固高运动控制卡; 正运动控制器/正运动控制卡; 功能丰富; 注释多; 新手学习; 框架。,C#雷赛运动控制系统源码框架:通用控制卡编程指南
xilinx RFSOC 相关论文和资料
美赛源码