`
zhangrong108
  • 浏览: 205296 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Tapestry 相关的控件介绍

阅读更多

1、Tapestry组件的写法
a、<t:textfield t:id="userName" t:value="jack"/>,这样的写法的优点是,看上去比较直观,与Struts等Web框架的一致。但是缺点就是,使用浏览器(或者美工)直接看页面的时候,浏览器无法正确显示这个组件。
b、<input type="text" t:type="textfield" t:id="userName" t:value="jack"/>这样写的话,浏览器就能正常显示一个文本输入框了。这也是Tapestry一直鼓吹的一大优点之一。
c、在Java类中使用注解来声明组件。这种方法我个人并不推荐,只是一种选择,并不直观也不方便。
d、Tapestry组件标签是不区分大小写的。
2、组件参数的前缀。从官方文档来看,参数的前缀还挺多的:
Prefix        Description
asset        The relative path to an asset file (which must exist).
block        The id of a block within the template.
component        The id of another component within the same template.
context        Context asset: path from context root.
literal        A literal string.
nullfieldstrategy        Used to locate a pre-defined NullFieldStrategy
message        Retrieves a value from the component's message catalog.
prop        A property expression to read or update.
translate        The name of a configured translator.
validate        A validator specification used to create some number of field validators.
var        Allows a render variable of the component to be read or updated.
但最最常用的只有2个:prop和literal
简单的说:prop表示这是一个变量名,literal表明这是一个常量
比如说select这个组件,它的基本写法是: <t:select t:id="color" model="literal:Red,Green,Blue" label="Colour:"/>
查看select的参考文档,model这个参数的缺省前缀是prop,所以如果直接写model="red"的话,Tapestry会认为red是一个变量名,会调用页面对应类的getRed()方法来获得一个列表。所以,此处如果想使用一个常量的话,需要显示指明literal前缀。而label的缺省前缀是literal,所以直接这样写就没有问题。
3、Label,显示一个标签,一般在需要多语言的环境下或者与textField配合使用。
<t:label t:for="userName">Label for the user name</t:label> Lable组件有一个t:for的属性,这个属性的值一般是一个textField的id。我们可以注意到Lable标签里写一段文字,这一段文字在页面部署运行后是不会显示的,写在这里,纯粹是给美工这样的静态页面浏览者看的。在实际运行中这一段文字会被替代。替代的内容就是t:for属性对应的TextField组件的t:id的值,比如:userName。当然Tapestry会自动把userName分成两个单词,而且把user的首字母大写。
如果根据t:id生成的lable不符合要求,可以有另一种选择:直接在textField中指定label:
<input type="text" t:type="textField" t:id="userName" t:label="Input User Name" t:value="jack"/>
4、PageLink,用于显示一个链接,点击后,跳转到指定页面
<a href="#" t:type="pageLink" t:page="register">Register</a>
5、ActionLink,用于显示一个链接,点击后,运行一个可以带有参数的指令。
<a href="#" t:type="actionLink" t:context="id" t:id="clickLink">
        ${user.id}
    </a>
  如果一个参数不够,比如,只用一个id不能唯一确定一个用户,必须结合部门id才能唯一确定用户的话,那么可以这样做:
  <a href="#" t:type="actionLink" t:context="userContext" t:id="clickLink">delete</a>
  相应的在java class中需要添加一个方法:getUserContext()
  public Object[] getUserContext() {
     return new Object[] {user.id, department.id};
  }
6、Loop
Loop并不是一个真正的Form控件,严格说起来是一种逻辑控制语句。语法如下:
<t:loop source="userList" value="user">
    <td>${user.name}</td>
</t:loop>
7、Radio & Radio
            <t:radiogroup t:id="type">
                <t:radio t:id="masterCard"/>
                <t:label for="masterCard"/>
                <t:radio t:id="visa"/>
                <t:label for="visa"/>
                <t:radio t:id="amex"/>
                <t:label for="amex"/>
                <t:radio t:id="dinersClub"/>
                <t:label for="dinersClub"/>
                <t:radio t:id="discover"/>
                <t:label for="discover"/>
            </t:radiogroup>

8、CheckBox
<t:checkbox t:id="showall" onclick="this.form.submit();"/> <t:label for="showall"/>
9、Select
<t:select t:id="color" model="literal:Red,Green,Blue"/>

分享到:
评论

相关推荐

    tapestry5以上的帮助事例,帮助文档与spring衔接文档

    Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...

    tapestry4开发指南

    在Tapestry 4中,表单处理变得简单而强大,书中的相关章节会讲解如何创建表单、验证输入、处理表单提交,以及使用Tapestry的服务器端和客户端验证机制。 另外,本书还会涉及国际化和本地化支持,帮助读者实现多语言...

    Tapestry API

    Tapestry API提供了`org.apache.tapestry5.corelib.components`包下的基础控件,如`Form`和`Submit`,它们作为控制器的一部分,帮助开发者实现MVC模式。 3. **事件与绑定** Tapestry支持事件驱动的编程,组件之间...

    extjs_tapestry.rar_extjs tapestry_extjs_tapestry_tapestry

    2. **自定义组件**:"AjaxServlet.page" 似乎是一个 Tapestry 页面定义,可能包含了一个与 AJAXServlet 相关的组件。开发者可能已经创建了一个自定义的 Tapestry 组件,该组件利用 ExtJS 的组件和 API 来增强其功能...

    Manning - Tapestry In Action

    在第四章中,作者介绍了Tapestry的高级组件,这些组件提供了更复杂的交互性和功能性,例如动态列表、树控件和表格等。第五章则专注于表单输入验证,展示了如何使用Tapestry的验证机制确保数据的完整性和正确性。 ##...

    Tapestry入门

    - **页面组成**:一个 Tapestry 应用由多个具有唯一名称的页面组成,每个页面由一个模板和一系列可重用的控件构成。模板基于标准 HTML,加上了一些特定的属性和标签来指示哪些部分应该由 Tapestry 控件处理。 #### ...

    Tapestry in Action

    根据提供的信息,我们可以总结出以下关于“Tapestry in Action”的相关知识点: ### 书籍基本信息 - **书名**:Tapestry in Action - **作者**:Howard M. Lewis Ship - **出版社**:Manning Publications Co. - *...

    tapestry实例(betterstore)

    **标题:“tapestry实例(betterstore)”** **描述:“比较有参考价值”** 在这个实例中,我们关注的是Apache Tapestry,一个开源的Java Web应用程序框架。Tapestry以其组件化和声明式编程模型而闻名,它允许开发者...

    Tapestry5BuildingWebApplications

    - **强大的表单支持**:Tapestry5内置了丰富的表单控件,并提供了高级的表单验证功能,使得开发者能够轻松构建复杂的表单界面。 - **AJAX支持**:框架提供了原生的AJAX支持,无需编写复杂的JavaScript代码即可实现...

    Enjoying Web Development with tapestry源码

    - **组件库**:包含各种预定义的组件,如表单控件、数据展示组件等,你可以研究它们的实现,学习如何自定义组件。 - **事件处理**:展示了如何使用事件驱动的方式进行页面间的通信,以及如何处理用户输入和服务器端...

    Tapestry开发指南

    组件是Tapestry的核心,它们可以是HTML元素、表单控件,甚至是复杂的用户界面部分。每个组件都有自己的生命周期和状态,并可以通过事件处理和属性绑定与应用程序逻辑交互。开发者可以通过编写Java类和HTML模板来创建...

    Tapestry开源框架的详细讲解doc文档(经典)

    由于Tapestry采用了基于控件的架构,开发者可以享受到类似于开发GUI应用的流畅体验,使得开发过程更为自然和愉快。 **Tapestry架构**: Tapestry作为Servlet API的扩展,通过拦截Servlet请求来处理页面的生命周期...

    tapestry 实例(Workbench)

    当用户触发某个操作时,相关组件可以响应并执行相应的逻辑。`@EventHandler`注解用于标记处理事件的方法。 4. **数据绑定**:Tapestry支持双向数据绑定,使组件属性与模型数据紧密关联。`@Property`注解用于声明可...

    Tapestry字典0.1.pdf

    - **定义**: 下拉列表框是一种允许用户从多个选项中选择一项或多项的UI控件。 - **实现**: 使用`&lt;tapestry:select&gt;`标签。 - **属性**: `model`, `options`, `optionLabel`, `optionValue`等。 **1.6 使用日历工具 ...

    Packt.Publishing.Tapestry.5.Building.Web.Applications.Jan.2008.pdf

    《Packt Publishing Tapestry 5 Building Web Applications Jan 2008》是一本全面介绍如何使用Tapestry 5框架构建高质量Web应用程序的书籍。通过详细的步骤指导和丰富的案例分析,本书不仅适合初学者快速入门,也为...

    tapestry实例(wiring)

    web层 面向组件 的 b/s 开发

    wicket文档

    设置Web容器的相关参数。 **7.2 为表单程序添加数据验证** - **7.2.1 验证信息何处来?** 数据验证的信息来源及其重要性。 - **7.2.2 Form验证数据的流程** 描述了数据验证的具体步骤。 - **7.2.3 完整的...

    《Wicket开发指南一书》PDF版本下载

    - **定义**: Wicket是一款基于Java的Web应用开发框架,与Struts、WebWork、Tapestry等框架类似。 - **特点**: - Html和代码的有效分离,便于团队合作。 - 基于规则的配置,减少XML等配置文件的使用。 - 学习曲线...

Global site tag (gtag.js) - Google Analytics