开始使用Tapestry

来源:互联网 发布:php curl 设置头部 编辑:程序博客网 时间:2024/05/20 00:51

去年年底进入一家新的公司,公司使用的技术是自己以前没涉及的,现将官方文档阅读翻译记录到blog。

准备开始

使用Tapestry非常简单,许多方式可以开始使用:看一段视频,浏览一组源码,使用Maven创建一个框架App或者通过辅导课程。

观看视频

观看Mark W.Shead的 10分钟简介,来快速了解Tapestry。该视频向您介绍了如何建立一个基于Hibernate和Ajax,具备校验的简单应用,并向您展示Tapestry开发者所享受的快速高效开发经验。

在线案例尝试
通过案例应用您可以在线尝试Tapestry。开始之前,请查看 酒店预订案例 (源码下载)

创建你的第一个Tapestry项目
初始化项目的最简单方法:使用 Apache Maven。(安装Maven)Maven 可以使用项目模板来创建Tapestry应用。
当你的Maven初始化以后,执行下面的命令:
mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.org

Maven 将提示你下载来创建Tapestry 5 快速开始项目并添加版本号(比如5.4.0),同时会询问你组织ID,个人ID和版本号。

如果您想下载一个未发布版本的Tapestry,请使用一个官方提供的URI。

您将看到以下进度内容:

$ mvn archetype:generate -DarchetypeCatalog=https://repository.apache.org/content/repositories/staging[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building Maven Stub Project (No POM) 1[INFO] ------------------------------------------------------------------------[INFO][INFO] >>> maven-archetype-plugin:2.3:generate (default-cli) > generate-sources @ standalone-pom >>>[INFO][INFO] <<< maven-archetype-plugin:2.3:generate (default-cli) < generate-sources @ standalone-pom <<<[INFO][INFO] --- maven-archetype-plugin:2.3:generate (default-cli) @ standalone-pom ---[INFO] Generating project in Interactive mode[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)Choose archetype:...5: https://repository.apache.org/content/repositories/staging -> org.apache.tapestry:quickstart (-)...Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 105: 5Choose org.apache.tapestry:quickstart version:1: 5.32: 5.3.13: 5.3.24: 5.3.3-rc-15: 5.3.36: 5.3.47: 5.3.58: 5.3.69: 5.3.710: 5.3.811: 5.4-beta-312: 5.4-beta-613: 5.4-beta-2214: 5.4-beta-2615: 5.4-beta-2716: 5.4-beta-28Choose a number: 16: 16Define value for property 'groupId': : com.exampleDefine value for property 'artifactId': : newappDefine value for property 'version':  1.0-SNAPSHOT: :Define value for property 'package':  com.example: : com.example.newappConfirm properties configuration:groupId: com.exampleartifactId: newappversion: 1.0-SNAPSHOTpackage: com.example.newapp Y: :[INFO] ----------------------------------------------------------------------------[INFO] Using following parameters for creating project from Archetype: quickstart:5.4-beta-28[INFO] ----------------------------------------------------------------------------[INFO] Parameter: groupId, Value: com.example[INFO] Parameter: artifactId, Value: newapp[INFO] Parameter: version, Value: 1.0-SNAPSHOT[INFO] Parameter: package, Value: com.example.newapp[INFO] Parameter: packageInPathFormat, Value: com/example/newapp[INFO] Parameter: package, Value: com.example.newapp[INFO] Parameter: version, Value: 1.0-SNAPSHOT[INFO] Parameter: groupId, Value: com.example[INFO] Parameter: artifactId, Value: newapp[INFO] project created from Archetype in dir: /users/joeuser/workspace/tapestry/tapestry-doc-examples/newapp[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 32.094 s[INFO] Finished at: 2015-04-03T08:10:26-07:00[INFO] Final Memory: 15M/216M[INFO] ------------------------------------------------------------------------~/workspaces/tapestry/tapestry-doc-examples
下载完成后,Maven 会创建一个可运行的框架项目。由于我们指定了新项目的个人ID,所以该项目在新项目的路径被创建(注意:如果你在当前得到一个'Ubable to get resource'的警告,你可以在防火墙里解除Maven资源库的 HTTP 限制)。
执行该项目,需要改变新项目的路径并执行:
$ mvn jetty:run[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building newapp Tapestry 5 Application 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------...Application 'app' (version 1.0-SNAPSHOT-DEV) startup time: 329 ms to build IoC Registry, 919 ms overall. ______                  __             ____/_  __/__ ____  ___ ___ / /_______ __  / __/ / / / _ `/ _ \/ -_|_-</ __/ __/ // / /__ \/_/  \_,_/ .__/\__/___/\__/_/  \_, / /____/        /_/                   /___/  5.4-beta-28 (development mode)[INFO] Started SelectChannelConnector@0.0.0.0:8080[INFO] Started Jetty Server
稍等片刻,待下载完成后,你可以打开浏览器,输入 http://localhost:8080/newapp 来查看正在运行的应用:

该项目包含了3个相同风格的页面:初始页面,首页,基本操作页面。你也可以将该项目导入的IDE开始编程,学习下一章节来查看应用组件。

浏览项目结构

newapp/├── build.gradle├── gradle│   └── wrapper│       ├── gradle-wrapper.jar│       └── gradle-wrapper.properties├── gradlew├── gradlew.bat├── pom.xml└── src    ├── main    │   ├── java    │   │   └── com    │   │       └── example    │   │           └── newapp    │   │               ├── components    │   │               │   └── Layout.java    │   │               ├── pages    │   │               │   ├── About.java    │   │               │   ├── Contact.java    │   │               │   ├── Error404.java    │   │               │   ├── Index.java    │   │               │   └── Login.java    │   │               └── services    │   │                   ├── AppModule.java    │   │                   ├── DevelopmentModule.java    │   │                   └── QaModule.java    │   ├── resources    │   │   ├── com    │   │   │   └── example    │   │   │       └── newapp    │   │   │           ├── components    │   │   │           │   └── Layout.tml    │   │   │           ├── logback.xml    │   │   │           └── pages    │   │   │               ├── About.tml    │   │   │               ├── Contact.tml    │   │   │               ├── Error404.tml    │   │   │               ├── Index.properties    │   │   │               ├── Index.tml    │   │   │               └── Login.tml    │   │   └── log4j.properties    │   └── webapp    │       ├── WEB-INF    │       │   ├── app.properties    │       │   └── web.xml    │       ├── favicon.ico    │       ├── images    │       │   └── tapestry.png    │       └── mybootstrap    │           ├── css    │           │   ├── bootstrap-responsive.css    │           │   └── bootstrap.css    │           ├── img    │           │   ├── glyphicons-halflings-white.png    │           │   └── glyphicons-halflings.png    │           └── js    │               └── bootstrap.js    ├── site    │   ├── apt    │   │   └── index.apt    │   └── site.xml    └── test        ├── conf        │   ├── testng.xml        │   └── webdefault.xml        ├── java        │   └── PLACEHOLDER        └── resources            └── PLACEHOLDER30 directories, 39 files

一个Tapestry应用是由页面组成,每个页面包含一个模板文件和一个Java类。

Tapestry 的页面模板文件,拥有.tml后缀并且在应用包 src/main/resources/ 下 (本例:src/main/resources/com/example/newapp/pages).

模板文件本质上是有特殊标记语法,和Java 类相关联的HTML

同理,Tapestry 页面Java类在应用包 src/main/java(本例:src/main/java/com/example/newapp/pages)它们的名称匹配 页面文件名称, (Index.tml -> Index.java).

在框架项目中,大部分的HTML在页面包里是找不到的除非是一个全局布局组件模板,组件Java 类在src/main/java/com/example/newapp/components,模板文件在src/main/resources/com/example/newapp/components。

下载项目包含一些可选项:

  • Bootstrap Css library 目录,在src/webapp/context/mybootstrap可以查看,在AppModule.java中决定生效与否。
  • 默认情况下,Tapestry 使用的是重写了JQuery的 Prototype 作为它的前端库。
  • 项目自动添加了简单的过滤器来展示每个请求
  • 项目不仅使用了Maven编译,还有Gradle

下一步

如欲进一步了解,请查看下一节 Tapestry Tutorial ,将会更详细讲述设置和导入项目至Eclipse...然后继续揭示有关Tapestry的更多信息。







1 0