Tapestry5开发文档

合集下载

bootstrap5 分页和js写法

bootstrap5 分页和js写法

Bootstrap 5 分页和JS写法一、概述Bootstrap 5 是一款流行的前端框架,提供了丰富的组件和样式,方便开发者快速搭建网页和应用。

其中,分页是网页中常见的组件之一,用于展示大量数据时进行分页展示,提高用户体验,本文将介绍Bootstrap 5 中分页的用法以及相关的 JavaScript 编写方法。

二、Bootstrap 5 分页在 Bootstrap 5 中,分页组件提供了简单易用的用法,开发者可以轻松地在网页中添加分页功能。

以下是Bootstrap 5 中分页的基本用法:1. 在网页中引入 Bootstrap 5 的 CSS 文件:```html<link href="xxx" rel="stylesheet">```2. 在需要添加分页的地方,使用以下 HTML 代码:```html<nav><ul class="pagination"><li class="page-item"><a class="page-link"href="#">Previous</a></li><li class="page-item"><a class="page-link"href="#">1</a></li><li class="page-item"><a class="page-link"href="#">2</a></li><li class="page-item"><a class="page-link"href="#">3</a></li><li class="page-item"><a class="page-link"href="#">Next</a></li></ul></nav>```以上代码中,`<nav>` 标签用于包裹整个分页组件,`<ul>` 标签和`class="pagination"` 用于创建分页样式,`<li>` 标签和`class="page-item"` 用于创建每个分页按钮,`<a>` 标签和`class="page-link"` 用于添加分页信息。

思途旅游CMS系统二次开发说明文档(v5.0)

思途旅游CMS系统二次开发说明文档(v5.0)

思途 CMS 自定义用户模板
镀金尐鋤頭·整理
5
非官方文档
思途旅游 CMS 系统二次开发说明文档(V5.0) 示例:
思途 CMS 后台实现单页模板替换功能,如网站首页需要更换另外一种显示风格,则可以在后台模板管理 那里上传做好的自定义模板即可.,自定义模板需要整体压缩成 zip 格式, 自定义模板的上传的模板文件会统 一存放到网站根目录下的 usertpl/zip 目录,上传成功后系统会自动解包.
(function($){})(jquery) 19.所有定义的方法如果可以拆分成小方法尽量进行拆分. 20.所有用户输入的数据都需要验证数据的合法性,防止注入与 XSS 攻击. 21.所有数据库表统一采用 innodb 引擎. 22.设计表时应尽量考虑数据的查询效率,字段的长度,类型的选择,经常被查询使用的字段应建立索引.
镀金尐鋤頭·整理
3
非官方文档
思途旅游 CMS 系统二次开发说明文档(V5.0) Payment 支付文件夹
也是采用 Kohana 框架独立。 Phone 手机网页端文件夹
也是采用 Kohana 框架独立。 Usertpl 手机端用户自定义模板上传文件夹 Usertpl(根目录下)电脑 pc 端网页用户自定义模板上传文件夹 v5 电脑 pc 端网页文件夹 也是采用 Kohana 框架开发。
关于 php 目录里的文件都建议使用类的方式实现,在模板里引用此 php 文件,即可调用,如果需要使用系 统核心 DB 功能,思途则提供了一个核心主控制器 Dz.php,此控制器可以接收需要调用的文件,参数实现调用自 定义 php 文件,实现模板的调用需求,例子如下
此例子会调用 lw_index/php/ajax.php 文件中 Test 类的 index 方法.

浪潮 Loushang5 BSP 开发指南

浪潮 Loushang5 BSP 开发指南

浪潮Loushang5 BSP开发指南文档状态:发布版山东浪潮齐鲁软件产业股份有限公司版权说明《浪潮Loushang5 BSP 开发指南》的版权归山东浪潮齐鲁软件产业股份有限公司所有。

未经山东浪潮齐鲁软件产业股份有限公司的书面准许,不得将本文档的任何部分以任何形式、采用任何手段(电子的或机械的,包括照相复制或录制)、或为任何目的,进行复制或扩散。

Copyright© 2009-2010 山东浪潮齐鲁软件产业股份有限公司。

版权所有,翻制必究。

前言本文档旨在对BSP各组件的对外API进行细致的描述,同时对开发人员使用过程中碰到的细节问题进行归纳和阐述。

希望通过本文档的介绍,能够使得开发人员能够不仅熟练的掌握各组件的使用,而且能够较深入的理解组件应用的场景。

由于时间仓促,编者水平有限,希望用户能够提出宝贵意见,以逐步完善本手册的内容。

阅读指南【文档目标】通过介绍使开发人员对 BSP的业务组件有所了解,帮助开发人员在业务系统中更好的应用与实践。

【阅读对象】本文档是为基于BSP进行业务应用开发的软件设计和开发人员所编写的。

【文档构成】本文档由七个章节构成,其中“引言”,介绍了BSP的定位以及文档中涉及到词汇;后续每一章节介绍一种业务组件。

【文档约定】凡是未在该文档中涉及到接口均不对外调用,如若调用,后果自负。

【注意】的意思是请读者注意那些需要注意的事项。

【警告】的意思是请读者千万注意某些事项,否则将造成严重错误。

目录1引言 (1)1.1概述 (1)1.2词汇表 (1)2配置管理 (2)2.1简介 (2)2.2配置参数 (2)2.2.1系统配置 (2)2.2.2安全配置 (3)2.3场景 (4)2.3.1研发阶段 (4)2.3.2产品阶段 (5)3组织机构 (6)3.1简介 (6)3.2接口介绍 (6)3.2.1接口关系 (6)3.2.2接口使用 (7)3.2.3接口一览 (7)3.3通用帮助 (16)3.3.1参数描述 (16)3.3.2演示示例 (16)3.4高级篇 (19)3.4.1组织数据同步分发 (19)3.4.2组织属性扩展 (21)4安全 (22)4.1简介 (22)4.2接口介绍 (22)4.2.1接口关系 (23)4.2.2接口使用 (23)4.2.3接口一览 (23)4.3通用帮助 (29)4.3.1参数描述 (30)4.3.2演示示例 (30)4.4认证和授权 (30)4.4.1认证 (30)4.5高级篇 (34)4.5.1用户信息数据同步分发 (34)5业务流水 (37)5.1简介 (37)5.2接口介绍 (37)5.2.1接口关系 (37)5.2.2接口一览 (37)5.3演示示例 (39)5.3.1示例A —技术审查报告编号 (39)5.3.2示例B —现场检查通知(红头文)编号 (40)6工作日历 (42)6.1简介 (42)6.2接口介绍 (42)6.2.1接口关系 (43)6.2.2接口一览 (43)6.3演示示例 (47)7数据字典 (48)7.1简介 (48)7.2接口介绍 (48)7.2.1接口关系 (48)7.2.2接口一览 (48)7.3演示示例—列表展示 (48)1引言1.1概述业务服务平台(BSP)致力于通用业务模型的提炼与开发。

tapestry学习总结

tapestry学习总结

href="javascript:delQTZYOption('selectedQTZY')"> <font color="#FF0000">删除</font></a>&nbsp;</TD>
<td NOWRAP> <select id="selectedQTZY" name="selectedQTZY"
document.getElementById("dmWindow").style.top = eT - dH; } else {
document.getElementById("dmWindow").style.top = eT + eH; }
document.getElementById("dmWindow").style.display = "block"; document.getElementById("dmWindow").style.left = dmType_label_target.offsetLeft + dmType_label_target.offsetWidth document.getElementById("dmWindow").offsetWidth; var sURL = contextPath+"/eps/public/DmTree.html?dmid="+ dmlb+"&editType=ReadOnly"+"&allowNull="+allowNull; if(MaxJC) {

5G 消息 开发指南说明书

5G 消息 开发指南说明书

5G消息开发指南文档版本01发布日期2022-11-25版权所有 © 华为技术有限公司 2022。

保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

商标声明和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。

除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。

除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

开发指南目录目录1 开发准备 (1)2 API代码样例 (3)2.1 JAVA (3)2.1.1 多媒体文件上传 (3)2.1.2 多媒体文件下载 (7)2.1.3 媒体文件删除 (9)2.1.4 单卡片5G消息发送 (11)2.1.5 带建议回复消息的多卡片5G消息 (15)2.1.6 码流转成json的多卡片+悬浮菜单 (18)3 错误码 (23)1开发准备5G消息开发有如下两种接入方式:●通过直接调用API接口–详情请参见开发流程、API代码样例●通过应用魔方实现接入–详情请参考进入AppCube开发环境、创建5G消息工程开发流程主要进行下述操作:1.参考数据准备,获取调用5G消息API的关联数据。

2.参考代码样例,进行多媒体文件上传、审核、下载、删除。

3.根据请求响应消息,判断请求是否成功。

说明若请求失败,请参考错误码进行修正,并重新执行24.根据短信发送请求,判断是否存在状态报告回调地址。

5.根据状态报告通知,判断5G消息是否发送成功。

数据准备2 API代码样例2.1 JAVA说明●本文档所述Demo在提供服务的过程中,可能会涉及个人数据的使用,建议您遵从国家的相关法律采取足够的措施,以确保用户的个人数据受到充分的保护。

tapescript的用法

tapescript的用法

Tapescript是一种用于编写和调试Tape语言的脚本语言。

Tape是一种基于文本的编程语言,它使用类似于汇编语言的语法来描述计算机程序。

Tapescript是Tape语言的一种脚本语言,它允许用户使用更高级的语法来编写和调试Tape程序。

Tapescript的用法非常简单,它与Tape语言紧密集成,可以在Tape程序中直接使用。

以下是一些Tapescript的基本用法:
定义变量:
x = 10
y = 20
控制结构:
IF x > y THEN
PRINT "x is greater than y"
ELSE
PRINT "x is not greater than y"
END IF
循环结构:
FOR i = 1 TO 10 DO
PRINT i
END FOR
函数定义和调用:
DEF add(a, b) = a + b
PRINT add(10, 20)
注释:
; This is a comment
调用其他程序或脚本:
CALL other_program.tapescript
使用Tapescript编写和调试Tape程序可以大大提高开发效率。

它提供了一种更高级的语法,使得编写和理解程序变得更加容易。

同时,Tapescript还支持调试功能,可以帮助开发人员快速定位和修复程序中的错误。

Java框架Tapestry基础知识

Java框架Tapestry基础知识Tapestry是一个JavaWeb应用架构,它负责管理JavaServer Pages(JSP)和Servlets。

它的主要目的是让开发者更容易开发和维护Web应用程序,同时提高Web应用程序的可扩展性和可维护性。

Tapestry具有很多强大的功能,包括依赖注入、组件式编程、事件驱动编程和灵活的页面流式处理,使其成为许多企业级应用程序开发的首选框架。

依赖注入(Dependency Injection)依赖注入是Tapestry的一个强大特性,是一种面向对象设计的思想,它可以更容易地解耦代码并测试应用程序。

依赖项通常在软件系统中导致耦合,所以系统的一个主要目标是将这种耦合降到最小。

在Tapestry中,依赖项的注入完全由框架自动完成。

这样的设计可以使代码更加透明,在代码中,可以清晰地看到依赖项在被使用。

组件式编程(Component Based Programming)Tapestry采用了一种强大的组件式编程方法,这可以使开发人员对应用程序进行可重用的构建块的创建和使用。

在Tapestry中,每个组件都是由一些属性和行为定义的,它们可以在多个页面内重用。

这可以使代码更加精简,可维护性更高,并且可以加快开发进程。

事件驱动编程(Event Driven Programming)Tapestry中的组件通常是事件驱动的。

这意味着当用户与应用程序进行交互时,会触发组件中的事件,并执行相应的代码。

事件可以是用户点击按钮、访问链接等。

事件驱动编程使代码更加清晰,并且可以更好地响应用户需求。

页面流程处理(Page Flow Processing)Tapestry中的页面流程(Page Flow)是一个强大的功能,它可以处理页面间的导航和页面状态的管理。

页面流在应用程序开发中扮演了极其重要的角色,Tapestry让它变得简单可靠。

Tapestry的页面流提供了页面之间的导航、会话状态管理、表单验证和提交等功能。

程序开发文档范文模板

程序开发文档范文模板以下是一个示例的程序开发文档模板,您可以根据需要进行修改和调整:程序开发文档==========项目概述----项目名称:XXX项目描述:XXX项目目标:XXX项目范围:XXX项目时间表:XXX项目资源:XXX需求分析----功能需求1. 需求1描述2. 需求2描述3. 需求3描述非功能需求1. 性能需求:系统需要达到的响应时间、处理速度等。

2. 安全性需求:系统需要满足的安全要求和标准。

3. 可维护性需求:系统需要具备的维护和升级能力。

4. 可扩展性需求:系统需要具备的扩展和升级能力。

5. 可靠性需求:系统需要达到的稳定性和可靠性标准。

6. 兼容性需求:系统需要支持的设备和软件环境。

7. 用户界面需求:系统需要具备的用户界面设计和交互方式。

8. 数据管理需求:系统需要管理的数据类型、数据量以及数据存储方式。

9. 法律和合规性需求:系统需要遵守的法律、法规和政策要求。

设计文档----系统架构设计1. 系统架构概述:描述系统的整体架构和组成模块。

2. 模块功能描述:详细描述每个模块的功能、输入输出和接口。

3. 模块之间的关系:描述模块之间的数据流和控制流。

4. 系统接口设计:描述系统与其他系统或硬件的接口方式和协议。

5. 系统安全设计:描述系统的安全策略和机制。

6. 系统性能设计:描述系统的性能指标和优化方案。

7. 系统可扩展性设计:描述系统的扩展方式和策略。

8. 系统可靠性设计:描述系统的容错和恢复机制。

9. 系统用户界面设计:描述系统的用户界面设计方案。

10. 数据管理设计:描述系统的数据存储和管理方案。

taro h5 编译语法es5

taro h5 编译语法es5Taro H5 编译语法主要遵循ES5(ECMAScript 5)规范。

ES5 是一种广泛使用的JavaScript 语法规范,它定义了JavaScript 的基本语法、数据类型、函数、事件处理、DOM 操作等方面的规范。

在Taro H5 开发过程中,你可以使用ES5 语法编写代码。

以下是一些基本的ES5 语法示例:1. 变量声明:```javascriptlet a = 1;var b = 2;```2. 函数定义:```javascriptfunction sum(a, b) {return a + b;}```3. 条件语句:```javascriptif (a > b) {console.log("a 大于b");} else if (a < b) {console.log("a 小于b");} else {console.log("a 等于b");}```4. 循环语句:```javascriptfor (let i = 0; i < 5; i++) { console.log(i);}```5. 数组操作:```javascriptconst arr = [1, 2, 3, 4, 5]; console.log(arr.length); // 输出:5console.log(arr[0]); // 输出:1```6. 对象操作:```javascriptconst obj = {name: "张三",age: 30,sayHello: function() {console.log("Hello, 我叫" + +",我" + this.age + " 岁了");}};obj.sayHello(); // 输出:Hello, 我叫张三,我30 岁了```以上示例只是ES5 语法的一部分,实际上ES5 还包括了许多其他功能,如事件处理、DOM 操作、Promise 等。

网站开发文档

网站开发文档介绍本文档是关于网站开发项目的详细文档。

它将涵盖项目的目标、功能、技术要求以及开发流程等方面的信息。

该文档旨在为开发团队提供指导和参考,以确保项目的顺利进行。

项目目标本项目的目标是开发一个网站,提供以下功能: - 用户注册和登录 - 用户个人信息管理 - 商品浏览和购买 - 订单管理 - 后台管理技术要求本项目将使用以下技术: - 前端开发:HTML、CSS、JavaScript - 后端开发:Python、Django框架 - 数据库:MySQL - 版本控制:Git开发流程本项目将遵循以下开发流程进行: 1. 需求分析:团队成员与客户沟通,明确项目需求和功能。

2. 原型设计:根据需求分析,设计项目原型,并与客户确认。

3. 数据库设计:定义数据库模型,包括用户信息、商品信息和订单信息等。

4. 前端开发:根据原型设计,使用HTML、CSS和JavaScript实现网站的前端界面和交互。

5. 后端开发:使用Python和Django框架实现网站的后端逻辑和数据库操作。

6. 单元测试:对编写的代码进行测试,确保功能的正确性和稳定性。

7. 集成测试:对整个网站进行测试,确保各个功能之间的协同工作。

8. 部署上线:将网站部署到服务器上,确保能够正常访问。

功能实现用户注册和登录•用户可以通过注册页面创建新账号。

•用户可以通过登录页面使用已有账号登录。

用户个人信息管理•用户可以查看和编辑个人信息。

•用户可以修改密码。

商品浏览和购买•用户可以浏览商品列表。

•用户可以查看单个商品的详细信息。

•用户可以将商品添加到购物车。

•用户可以在购物车中修改商品数量。

•用户可以提交订单。

订单管理•用户可以查看自己的订单列表。

•用户可以查看单个订单的详细信息。

•用户可以取消订单。

后台管理•管理员可以登录后台管理页面。

•管理员可以管理用户信息。

•管理员可以管理商品信息。

•管理员可以管理订单信息。

时间计划本项目的预计完成时间为两个月,具体时间计划如下: - 第一周:需求分析和原型设计 - 第二周:数据库设计和前端开发 - 第三周:后端开发和单元测试 - 第四周:集成测试和完善功能 - 第五周:部署上线和优化性能 - 第六周:测试和修复bug - 第七周:项目验收和文档编写 - 第八周:项目交付和总结风险管理本项目存在以下风险: - 技术风险:开发团队对使用的技术不熟悉,可能导致开发进度延误。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Tapestry for Nonbelievers 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架

引言 Apache Tapestry是一个使用Java语言创建web应用的面向组件的开发框架。Tapestry应用建立在根据组件构建的页面的基础上。这个框架能够提供输入验证(input validation)、本地化/国际化(localization/internationalization)、状态/持续性(state/persitency)管理、URL构建/参数映射(parameter mapping)等功能。

为什么Tapestry值得推荐呢?一部分原因是:  它便于终端用户使用。Tapestry在设计最初就考虑到了应用的安全和伸缩性,有内嵌的Ajax、输入验证、国际化以及异常报告功能。  它便于开发人员使用。Tapestry独一无二的类重加载(class-reloading)特性大大地推动了开发人员的开发效率。借助于 Tapestry,对源代码的修改立马就可以看到结果,不需要重新部署和启动应用 !它的异常报告也极为具体,甚至提供可能的修正建议。  它便于web设计者使用。Tapesry页面是有效的HTML(或XHTML)文件!你可以用自己喜欢的浏览器打开这些页面。  它封装了最佳实践:REST风格的URL、可降解的JavaScript、没有XML的配置等等。  它支持与Hibernate、Spring、Seam、Acegi等框架的集成。

本文中,我们会向大家介绍Tapestry框架版本5。我们将利用Tapestry 5开发一个简单的具有创建/读/更新/删除功能的应用,在创建这个应用的过程中,你将体会到Tapestry带来的开发效率的提升。我们会从多方面来讲解 Tapestry应用,比如应用的页面导航(page navigation)、依赖性(dependency)和资源注入(resource injection)、用户输入验证(input validation)和应用状态管理(state management)等等。你还将了解如何应用Tapestry中内嵌的Ajax功能来创建自己的支持Ajax的组件。

本文的目标在于向大家展示如何借助Tapestry在尽可能减小开发花销的情况下创建更漂亮、更好用、更安全、更灵活的应用。

先决条件 开发本文所举例子,需要安装下列软件:  Java SE Development Kit (JDK) 5.0版本或更新版本。可以从http://java.sun.com/javase/downloads/下载。  Servlet容器,如Apache Tomcat 5.5或更新版本。  可以选择下载安装Apache Maven 2.0.8。在这种情况下,拟不需要再安装一个单独的servlet容器,可以使用Maven来构建并运行Tapestry 5应用(请参考Appendix以获得更多相关信息)。  我们也建议使用当前流行的集成开发环境(IDE),如Eclipse或NetBeans,你可以使用这些集成开发环境来编辑应用中的Java和HTML文件。

第一个Tapestry 5 应用 开始着手使用Tapestry框架来开发应用的方式有很多,其中一种是下载这里提供的Web archive (WAR) file文件,将它们载入你所选择的IDE中。如果你选择的是结合Web工具的Eclipse的话,那么你需要完成下列步骤:

 启动Eclipse并使用Java视图  选择“文件”>“导入”„„或者在项目浏览窗口右击鼠标,选择“导入”„„  在“导入”对话框中,选择“WAR文件”选项,然后点击“下一步”。  点击“浏览„”,然后从文件系统中选择WAR文件。如果你还没有服务器运行环境的话, 那就需要选择一个已安装的运行环境,比如Apache Tomcat。  点击“结束”,IDE环境会根据导入的WAR文件生成一个web项目。

你也可以使用Apache Maven,在Appendix中有更多关于如何使用quickstart原型来开发Tapestry项目的信息。

在刚创建的这个项目上点击鼠标右键,选择 Run As > Run on Server来启动应用。服务器启动之后,在浏览器地址栏输入URL:http://localhost:8080/app,你会看到如下页面: 第一个Tapestry应用就这样轻松搞定,并且启动运行了。我们来看一下这个项目的目录结构:

在source文件夹下,你可以找到这个示范应用的root包--t5demo。该应用的web.xml部署描述器中,你可以发现一个叫做tapestry.app-package的上下文参数,该参数值就是这个应用包的名字。和几乎所有的Java web开发框架不同的是,Tapestry 5不需要任何XML配置文件。刚刚提到的上下文参数是唯一一个你需要提供的配置。它告诉Tapestry在运行时从哪里可以找到应用的页面、组件以及其它一些必需的类。比如,页面类应该被存储在tapestry.app-package下名为pages的子包中(也就是t5demo.pages),对应地,组件的类则应该存储在t5demo.components中。

第一个Tapestry页面 让我们从第一个Tapestry页面开始这个示范应用的开发旅程。每个Tapestry页面都由一个Java类和Tapestry组件模板合成。组件模板是指那些以“.tml”为扩展名的文件,这里“tml”是Tapestry标记语言(Tapestry Markup Language)的缩写。页面模板和页面通常存储于同一个类包中,但也可以直接存储在web应用的根目录(WebContent)中。Tapestry模板是组织良好的XML文档,你可以以修改XHTML文档同样的方式来对待这些模板。Tapestry的元素和属性都在其对应的XML命名空间中定义,通常都以“t:”作为前缀。在Tapestry中,Start页面等同于“index”页面,如果URL中没有明确指明页面的名字的话,那么Start页面会作为默认页面被调用。

针对本文中的示范应用,我们一起来简单地修改一下Start.tml文件。让我们把这个文件中所有的初始内容删除掉,从头开始,使用下面这段代码来更新这个模板:

Tapestry 5 Demo Application ${helloWorld}

body标签中有这样一个表达式:${helloWorld},这个表达式被称作扩展(expansion)。在这段示范代码中,这个扩展被用来访问对应的页面类t5demo.pages.Start的helloWorld属性。

接下来,我们在t5demo.pages包中创建一个Start类。和几乎所有其他的Java web框架不同的是,Tapestry不会强迫你在基础类的基础上进行扩展,也不强迫你去实现一个特定的接口。Tapestry页面是 POJO(Plain Old Java Objects)。和所有POJO一样,页面类必须声明为public,并且必须拥有一个无参构造函数。你需要考虑的仅仅是应用的root包和它的页面、组件等等的子包。

这个模板中提到了一个叫做helloWorld的属性,那么我们现在就来创建这个属性。Tapestry遵循Sun的JavaBeans代码编写规范,所以我们需要创建一个命名为getHelloWorld()的accessor方法。但为了更好地理解Tapestry的工作原理,我们先不创建这个getHelloWorld()方法,而是创建一个叫做getHello()的方法,看看Tapestry将会有怎样的反应:

package t5demo.pages; public class Start { public String getHello(){ return "Hello World!"; } }

如果这时候你访问这个应用的话,你会看到Tapestry的标准异常页面:

这个异常页面,不仅仅拥有报告错误(拼写错误或者错误的属性名)的作用,它还列出一系列有用的属性以方便开发人员纠正其错误。同时,它还指明了错误在模板中所处的位置,它不单告诉你这个错误发生在哪个文件哪行,甚至能够提供给你错误所处位置前后一小段代码。Tapestry的这个功能比较贴近于开发者的实际需要,也是它本身许多与众不同的优点之一。

现在,我们可以将Start.tml文件中的错误表达式更正为${hello},然后再刷新页面的话,我们就可以看到这样一个正确的页面: 上面这段简单操作中还蕴藏着一个坚定不移的事实,那就是无论你怎样修改代码,Tapestry都能像在检索模板中的修改一样轻松检索到Java类中的修改。使用Tapestry,不需要重新部署应用就能查看到代码修改导致的页面和组件类的改变。在这种方式下,你会发现自己的工作效率空前得高,而且没有什么挫折感。这是使用Tapestry的另一个好处。在Tapestry网站上,你还能查到关于Tapestry 5所具有的重加载(reloading)特性的更多信息。

同一个应用的页面通常使用通用的前后一致的导航元素、整体布局、CSS(Cascading Style Sheets)、版权信息等等。传统的方法通常是采用某种服务器端引入(include)的方式,但Tapestry的方式是创建并使用一个组件。

第一个Tapestry组件 很多Java Web框架都使用SiteMesh或Tiles来修饰页面。在Tapestry中,一个简单的组件就可以达到这个目的。我们下面将要创建的第一个组件--Layout--它将会被作为所有页面的统一的页面布局。在这个示范应用中,我们选择Blue Freedom设计风格并将它的markup复制到t5demo.components代码包下名为Layout.tml的新文件中,另外,还有它的stylesheet和相关图片也需要复制到这个web应用的根目录(WebContent)下。

相关文档
最新文档