<page-service-encoderid="external"extension="external"service="external"/>
<asset-encoderid="asset"path="/assets"/>
<extension-encoderid="ext"id="ext"extension="svc"after="*"/>
</contribution>
</module>
1.3 组件包规范文件: 为了跨项目积累组件,我们可以将组件打成jar包,然后通过在应用程序规范文件中引入组件包的方式,调用组件包中的自定义组件。组件包规范文件的后缀为“.library”的XML文件,命名任意。
2. Tapestry页面的组成
2.1 HTML模板:HTML模板就是标准的静态HTML页面,在HTML模板中我们通过jwcid(Java Web Component ID)标签属性调用Tapestry组件。例如上例中的:
<spanjwcid="@Insert"value="ognl:t4start"/>

在上面的代码中,调用了Tapestry的官方组件Insert,value属性是Insert组件的参数之一。"@"符号用于区分jwcid是一个组件类型还是一个组件ID,如果是一个组件ID,tapestry将在HTML模板对应的页面规范中寻找对应该组件ID的组件调用配置。(亦可这样理解,"@"为官方组件,无"@"为自定义组件,自定义组件需要在“.page”文件中详细配置该组件的用法。)
2.2 页面规范:是以页面名称命名且后缀是.page的XML文件,这个后缀为.page的XML文件必须声明Tapestry的页面规范DOCTYPE。
例如在上例中:
<spanjwcid="@Insert"value="ognl:t4start"/>
也可以这样来表示:
HTML模板:
页面规范:
<?xmlversion="1.0"encoding="GBK"?>
<!DOCTYPEpage-specificationPUBLIC
"-//ApacheSoftwareFoundation//TapestrySpecification4.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<page-specificationclass="myts.Home">
<componentid="test"type="Insert">
<bindingname="value"value="t4start"/>
</component>
</page-specification>
2.3 页面类:必须继承org.apache.tapestry.html.BasePage类,如:
packagemyts;
importorg.apache.tapestry.html.BasePage;
publicabstractclassHomeextendsBasePage{
publicStringgetT4start(){
return"hello,Tapestry4..";
}
}
3. Tapestry组件的组成
文件、资料移交签收单_表格类模板_表格/模板_实用文档 暂无评价|0人阅读|0次下载|举报文档文件、资料移交签收单_表格类模板_表格/模板_实用文档。在acdsee版本中,已经支持许多格式的媒体文件,包括对cur(鼠标文件)、ico(图标文件)甚至ani(动态光标文件)的支持,只要打开一文件夹,其中的这些文件均会被显示出来,这时候,可以双击它切换到浏览窗口,这时候的ani文件就会被重复播放,在许多多媒体软件中,都只能够把ani文件当作动态光标来使用,而有时候需要把它当作一般的文件来使用,这时候可以先切换至浏览模式,再用屏幕抓取软件,如lotus screen camera、hypercam等软件把它抓下来,存为avi格式文件即可被多媒体软件使用,对于动态gif文件也可以采用类似的方法,从而丰富课件的素材。 } 类厂本身是一个管理组件实例化的类. 在 xpcom 中, 类厂要实现 nsifactory 接口, 它们就象上面的代码一样要使用类厂设计模式来封装对象的构造和初始化.封装构造函数 的例子是一个简单的无状态的类厂版本, 实际的编程要复杂一些, 一般的类厂都需要保存状态. 类厂至少应该保存那些对象已经被创建了的信息. 如果类厂管理的实例被存放在一个动态联接库中, 还需要知道什么时候可以卸载这个动态联接库. 当类厂保存了这样的信息, 就可以向类厂查询一个对象是否已经被创建.另一个需要保存的信息是关于单件. 如果一个类厂已经创建了一个单件类型的类, 后续的创建该单件的函数调用将返回已经创建的对象. 尽管有更好的工具和方式来管理单件, 开发人员可能仍然需要通过这种方式来保证只有一个单件对象被创建.厂模式可以完全利用函数来做, 状态可以保存在全局变量中。

4. ognl
OGNL是 Object Graph Navigation Language 的简称,是一种绑定方式的表达式语言。
OGNL是OpenSymphony的一个开源项目。
OGNL最重要的也是最根本的作用是简化调用Java类中的getter/setter方法,同时,他也是一种功能单一且易于使用的表达式语言,OGNL表达式就式该语言的全部。对于OGNL如何与模板对象绑定tapestry组件,Tapestry已经实现,我们不需要关心。同时,虽然OGNL表达式带有运算功能,但是Tapestry框架将页面逻辑全部放到了页面类中,因此根本没必要使用OGNL表达式来处理页面逻辑。
举几个例子便于理解:
4.1 简化调用Java属性。
ognl:test
java类:
publicStringgetTest{
return"test";
}
4.2 逐层访问java对象方法
ognl:user.value
java类:
publicUsergetUser(){
returnnewUser();
}
publicclassUser{
publicStringgetValue(){
return"test"
}
}
4.3 访问java对象中的方法
ognl:makeTest
java类:
publicvoidmakeTest(){
System.out.println("test");
}
最后,让我们来回顾一下Tapestry框架的整个调用过程:Home.html -> Home.page -> Home.class
源:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-109692-2.html
一是当时我们实力不够