开始使用Tapestry

去年年底进入一家新的公司,公司使用的技术是自己以前没涉及的,现将官方文档阅读翻译记录到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: 5
Choose org.apache.tapestry:quickstart version:
1: 5.3
2: 5.3.1
3: 5.3.2
4: 5.3.3-rc-1
5: 5.3.3
6: 5.3.4
7: 5.3.5
8: 5.3.6
9: 5.3.7
10: 5.3.8
11: 5.4-beta-3
12: 5.4-beta-6
13: 5.4-beta-22
14: 5.4-beta-26
15: 5.4-beta-27
16: 5.4-beta-28
Choose a number: 16: 16
Define value for property 'groupId': : com.example
Define value for property 'artifactId': : newapp
Define value for property 'version':  1.0-SNAPSHOT: :
Define value for property 'package':  com.example: : com.example.newapp
Confirm properties configuration:
groupId: com.example
artifactId: newapp
version: 1.0-SNAPSHOT
package: 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
            └── PLACEHOLDER
30 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的更多信息。



 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值