今天介绍一下如何建立自己得Validator
1. 建立Validator继承BaseValidator类
我实现得是验证用户输入必须和指定字段一致。
如果想要带参数得验证,请添加一个带String参数得构造方法,并实现setter,getter方法
例如validator验证调用名为 name,则实现setName,getName方法。
代码:
package org.appfuse.webapp.tapestry;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.TapestryUtils;
import org.apache.tapestry.form.FormComponentContributorContext;
import org.apache.tapestry.form.IFormComponent;
import org.apache.tapestry.form.ValidationMessages;
import org.apache.tapestry.form.validator.BaseValidator;
import org.apache.tapestry.valid.ValidatorException;
public class MyValidater extends BaseValidator {
//用户得输入内容
private String name;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name
* the name to set
*/
public void setName(String name) {
this.name = name;
}
public MyValidater() {
}
public MyValidater(String string) {
super(string);
}
//实现验证方法
public void validate(IFormComponent field, ValidationMessages messages,
Object object) throws ValidatorException {
String str = object.toString();
if (!str.equals(name))
throw new ValidatorException(messages.formatValidationMessage(
getMessage(), "invalid-format", new Object[] {
field.getDisplayName(), null }));
}
}
2.ok,修改hivemodule.xml 文件,添加以下代码
<contribution configuration-id="tapestry.form.validator.Validators">
<validator name="name" configurable="true" class="org.appfuse.webapp.tapestry.MyValidater"/>
</contribution>
注意:如果你的validator不带参数,请设置configurable=false
3. ok,可以在page文件中使用了,
<component id="usernameField" type="TextField">
<binding name="value" value="user.username"/>
<binding name="validators" value="validators:required,name=airdream"/>
<binding name="displayName" value="message:user.username"/>
</component>
大功告成!输入内容必须为aridream,否则报错!
分享到:
相关推荐
Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...
Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它提供了一种基于组件的模型来构建动态、数据驱动的Web应用。本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用...
1. Tapestry 把在建立 Web 应用程序容易出错的工作交由框架本身来完成,接管了大量手工完成的任务,如分发用户请求,创建和解释 URL 信息,操作本地化和国际化等等大量的工作。 2. Tapestry 由“对象、方法、域”...
通过研究这些源码和API,开发者不仅可以掌握Tapestry的基本用法,还能深入了解其设计哲学和内部工作流程,从而更好地优化和扩展自己的应用程序。同时,对于那些希望贡献到Tapestry开源项目的人来说,这是一份宝贵的...
Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...
同时,Tapestry的双向数据绑定使得模型和视图之间的同步变得简单,`PropertyConduit`和`PropertyBinding`是实现这一功能的关键。 4. **模板语言** Tapestry使用一种基于HTML的模板语言,允许开发者在HTML中嵌入...
### Tapestry4开发指南 #### 一、Tapestry4概览 Tapestry4作为一款先进的Web应用框架,由Howard Lewis Ship所创造,旨在提供一种更为高效、灵活的Web应用构建方式。与前代Tapestry3相比,Tapestry4在设计上有了...
**Tapestry 3 开发指南** Tapestry 3 是一个开源的Java Web应用程序框架,它在20世纪90年代末至21世纪初非常流行,由Apache软件基金会维护。这个框架提供了组件化、事件驱动和声明式编程模型,帮助开发者构建动态、...
Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...
Tapestry 还内置了Ajax支持,使得创建Ajax组件变得更加容易。 在开始使用Tapestry 5 开发之前,确保安装了Java SE Development Kit 5.0或更高版本,以及Servlet容器,如Apache Tomcat 5.5或更新版本。如果选择使用...
此外,其开发模式下的实时反馈功能让调试变得更加高效。 11. **性能优化**:Tapestry通过缓存策略、延迟加载和最小化HTTP请求等方式提高应用性能。它还支持AOP(面向切面编程)来处理如安全检查、日志记录等横切...
读者将学习如何创建和定制自己的组件,以及如何通过事件来协调组件间的交互。 接着,书中会详细讲解Tapestry 5的模版语言和表达式语言,让开发者能够有效地定义页面布局和动态内容。Tapestry的模版语言允许开发者...
Tapestry 5.2.6 是一个成熟的Java Web开发框架,它提供了一种高效、模块化和可扩展的方式来构建动态、数据驱动的Web应用程序。这个框架的核心理念是将用户界面与业务逻辑分离,通过组件化的思想实现页面的构建,从而...
Tapestry的组件系统非常强大,允许开发者定义自己的可复用组件,每个组件都可以有自己的属性、事件和行为。这些组件可以通过简单的XML标记(如`<span jwcid="@Insert" ...>`)在页面模板中使用。ognl(Object-Graph ...
在Tapestry 4中,表单处理变得简单而强大,书中的相关章节会讲解如何创建表单、验证输入、处理表单提交,以及使用Tapestry的服务器端和客户端验证机制。 另外,本书还会涉及国际化和本地化支持,帮助读者实现多语言...
每个组件都有自己的状态和生命周期,可以通过声明式的方式来定义其行为。这使得代码更易于理解和维护,同时也提高了开发效率。 **二、Tapestry 组件** 1. **页面组件**:Tapestry 应用的基础单元是页面,页面由一...
Tapestry5.0.16文档和大家一起学习
它将Web页面分解为独立、可重用的组件,每个组件都有自己的状态和行为。这种设计模式提高了代码的可维护性和可扩展性。开发者可以专注于创建和组合这些组件,而不是处理低级别的HTML和Servlet细节。 在Tapestry 4.0...
Apache Tapestry是一个开源的Java Web框架,它的核心理念是将用户界面分解为可重用的组件,每个组件有自己的HTML模板、Java代码以及状态管理。Tapestry通过组件事件处理和页面导航规则来管理应用程序的流程,这使得...