- 浏览: 149067 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
415421979:
我也遇到了这个问题 求解啊
JBoss/Tomcat 安装路径带空格时 JNDI 无法初始化的BUG -
ivonxiao:
谢谢楼主的分享
异常管理系统 -
ivonxiao:
谢谢楼主的分享~~
Java对象的强、软、弱和虚引用
前台校验:
采用Tapestry提供的核心验证,页面调用的方法:
方法一,采用读取locale配置文件的方式
<input jwcid="userName@TextField" value="ognl:userName" validators="validators:required" displayName="用户名" size="30"/>
方法二,采用自定义的消息的方式:
<input jwcid="userName@TextField" value="ognl:userName" validators="validators:required[[{0}]不能为空!]" displayName="用户名" size="30"/>,其中,{0}取该组件的displayName的直。
方法三,采用自定义验证的方式:
配置:
在应用程序配置文件中配置国际化配置:
<meta key="org.apache.tapestry.accepted-locales" value="en,zh_CN"/>
上面这个配置会首选英文,所以,如果要系统首选中文,那么需要这样配置:
<meta key="org.apache.tapestry.accepted-locales" value="zh_CN"/>,这样 的话所有的客户端校验信息就会是中文的了。
更改默认的校验信息:
如果对默认的校验信息不满意,那么可以更改Tapestry jar包中的org/apache/tapestry/valid/ValidationStrings_zh_CN.properties文件中的内容即可。
后台校验:
tapestry是用Delegator组件进行后台校验的,使用的校验类是org.apache.tapestry.valid.ValidationDelegate类,实现后台校验需要做的就是在.page规范文件中声明一个Delegator组件,然后和ValidationDelegate对象进行绑定,如果发生校验错误,将发生错误的组件,输入的值和错误的信息以及类型存放到ValidationDelegate对象中,然后返回到发生校验错误的页面即可。
.page规范文件:
<page-specification class="com.bjais.Home">
<bean name="delegate" class="org.apache.tapestry.valid.ValidationDelegate"/>
<component id="form" type="Form">
<binding name="listener" value="listener:onSubmit"/>
</component>
<component id="weight" type="TextField">
<binding name="value" value="weight"/>
<binding name="translator" value="translator:number,pattern=#.#"/>
</component>
<component id="errors" type="Delegator">
<binding name="delegate" value="beans.delegate.firstError"/>
</component>
</page-specification>
.java文件:
public abstract class Home extends BasePage
{
public abstract int getWeight();
public IPage onSubmit()
{
ValidationDelegate delegate=(ValidationDelegate)getBeans().getBean("delegate");
int weight=getWeight();
if(weight<0)
{
delegate.setFormComponent(getComponent("weight"));
delegate.recordFieldInputValue(Integer.toString(weight));
delegate.record("Weight 必须大于0",ValidationConstraint.TOO_SMALL);
}
if(delegate.getHasError())
{
return null;
}
}
}
.html文件:
<html>
<span jwcid="errors"/>
<form jwcid="form">
<table>
<tr>
<td>Weight:</td>
<td><input type="text" jwcid="weight"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="OK"/></td>
</tr>
</table>
</form>
</html>
但是上面的做法比较繁琐,可以采用validator使验证变的简单些,做法如下:
.page规范文件
<page-specification class="com.bjais.Home">
<bean name="delegate" class="org.apache.tapestry.valid.ValidationDelegate"/>
<component id="form" type="Form">
<binding name="listener" value="listener:onSubmit"/>
<binding name="delegate" value="beans.delegate"/>
</component>
<component id="weight" type="TextField">
<binding name="value" value="weight"/>
<binding name="translator" value="translator:number,pattern=#.#"/>
<binding name="validators" value="validators:min=0"/>
<binding name="displayName" value="literal:Weight"/>
</component>
<component id="errors" type="Delegator">
<binding name="delegate" value="beans.delegate.firstError"/>
</component>
</page-specification>
而在.java文件中不用再错数据校验判断了。
在上面的例子中,weight为int,所以需要进行转换,如果用户输入的不是一个数字,那么就会转换失败,这时转换器就会像验证器一样工作,将错误信息记录在验证代理中。
空校验的方法:
<component id="weight" type="TextField">
<binding name="value" value="weight"/>
<binding name="translator" value="translator:number,pattern=#.#"/>
<binding name="validators" value="validators:required,min=0"/>
<binding name="displayName" value="literal:Weight"/>
</component>
也可以加上自定义的校验失败的信息:
<component id="weight" type="TextField">
<binding name="value" value="weight"/>
<binding name="translator" value="translator:number,pattern=#.#"/>
<binding name="validators" value="validators:required[you must enter {0}!],min=0"/>
<binding name="displayName" value="literal:Weight"/>
</component>
还可以和FieldLabel组件一起工作:
<component id="weight" type="TextField">
<binding name="value" value="weight"/>
<binding name="translator" value="translator:number,pattern=#.#"/>
<binding name="validators" value="validators:required[you must enter {0}!],min=0"/>
<binding name="displayName" value="literal:Weight"/>
</component>
<component id="weightLabel" type="FieldLabel">
<binding name="field" value="component:weight"/>
</component>
这样,但验证失败的时候和验证失败的组件关联的fieldLabel也一起发生样式更改,例如颜色变为红色。
validators里面的内容前缀首先是validators:,Validator之间用逗号分隔,每个Validator的格式可以是下面形式
1. name
2. name=value
3. name[message]
4. name[%message-key]
5. name=value[message]
6. name=value[%message-key]
7. $name
其中name为Validator名,如:email, required, max, maxDate, min等等。
value为传入的参数值,如:min=3, max=5等。
message为当该Validator校验失败后显示的Message。
message -key为本地化文件中Message的Key值, 如Tapestry Page Name为Login的话,那么相应的有Login.html,Login.page,Login.properties,Login_zh_CN.properties等,这里面的两个properties文件就是本地化文件。
下面是具体的例子
ValidationExamples.html中
<input type="text" jwcid="minAndMaxWithMessage@TextField"
value="ognl:minAndMaxWithMessage"
translator="translator:number,pattern=#####"
displayName="literal:Min,Max"
validators="validators:min=3[%must-larger-than-3],max=5[Must less than 5]"/></td>
那么在ValidationExamples.properties中为
must-larger-than-3=Field {0} must larger than 3.
需要注意的是,其中的{0}参数会被自动用Field名替换。
$name中的name是对一个bean的引用,该bean可以在Page Specification中定义。
如在ValidationExamples.page中定义为
<bean name="zipValidator" class="org.apache.tapestry.form.validator.Pattern">
<set name="pattern" value="message:zip-code-pattern"/>
<set name="message" value="message:zip-code-message"/>
</bean>
那么在ValidationExamples.html中就可以像下面这样引用。
<input type="text" jwcid="pattern@TextField"
value="ognl:pattern"
displayName="literal:Pattern"
validators="validators:$zipValidator"/>
前台校验的样式
Tapestry4.1使用的是dojo的校验,所以需要加上样式,否则会很难看,需要实现的样式类如下: .alertButton {
width: auto;
border: none;
background-color: #699ED9;
color: #fff;
padding: 0.1em;
border-bottom: 1px solid #5885b6 !important;
border-right: 1px solid #5885b6 !important;
border-top: 1px solid #92b8e2 !important;
border-left: 1px solid #92b8e2 !important;
cursor: hand;
cursor: pointer;
}
.alertDialog {
width: 30em;
border: 2px solid #ff660a;
padding: 1em;
background: #ffffff;
-moz-border-radius: 10px;
}
.alertContent .alertButton {
float: right;
position: relative;
bottom: 1em;
}
.missingList, .invalidList {
padding-bottom: 0.6em;
padding-top: 0.2em;
padding-left: 0.1em;
padding-right: 0.2em;
margin: 0;
}
.missingList {
border-top: 4px solid #bedef4;
}
.invalidList {
border-top: 4px solid #ffaf7e;
}
.missingList li, .invalidList li {
list-style: none;
font-style: italic;
}
.fieldMissing {
background: #bedef4;
}
.fieldInvalid {
background: #ffaf7e;
font-weight: bold;
}
采用Tapestry提供的核心验证,页面调用的方法:
方法一,采用读取locale配置文件的方式
<input jwcid="userName@TextField" value="ognl:userName" validators="validators:required" displayName="用户名" size="30"/>
方法二,采用自定义的消息的方式:
<input jwcid="userName@TextField" value="ognl:userName" validators="validators:required[[{0}]不能为空!]" displayName="用户名" size="30"/>,其中,{0}取该组件的displayName的直。
方法三,采用自定义验证的方式:
配置:
在应用程序配置文件中配置国际化配置:
<meta key="org.apache.tapestry.accepted-locales" value="en,zh_CN"/>
上面这个配置会首选英文,所以,如果要系统首选中文,那么需要这样配置:
<meta key="org.apache.tapestry.accepted-locales" value="zh_CN"/>,这样 的话所有的客户端校验信息就会是中文的了。
更改默认的校验信息:
如果对默认的校验信息不满意,那么可以更改Tapestry jar包中的org/apache/tapestry/valid/ValidationStrings_zh_CN.properties文件中的内容即可。
后台校验:
tapestry是用Delegator组件进行后台校验的,使用的校验类是org.apache.tapestry.valid.ValidationDelegate类,实现后台校验需要做的就是在.page规范文件中声明一个Delegator组件,然后和ValidationDelegate对象进行绑定,如果发生校验错误,将发生错误的组件,输入的值和错误的信息以及类型存放到ValidationDelegate对象中,然后返回到发生校验错误的页面即可。
.page规范文件:
<page-specification class="com.bjais.Home">
<bean name="delegate" class="org.apache.tapestry.valid.ValidationDelegate"/>
<component id="form" type="Form">
<binding name="listener" value="listener:onSubmit"/>
</component>
<component id="weight" type="TextField">
<binding name="value" value="weight"/>
<binding name="translator" value="translator:number,pattern=#.#"/>
</component>
<component id="errors" type="Delegator">
<binding name="delegate" value="beans.delegate.firstError"/>
</component>
</page-specification>
.java文件:
public abstract class Home extends BasePage
{
public abstract int getWeight();
public IPage onSubmit()
{
ValidationDelegate delegate=(ValidationDelegate)getBeans().getBean("delegate");
int weight=getWeight();
if(weight<0)
{
delegate.setFormComponent(getComponent("weight"));
delegate.recordFieldInputValue(Integer.toString(weight));
delegate.record("Weight 必须大于0",ValidationConstraint.TOO_SMALL);
}
if(delegate.getHasError())
{
return null;
}
}
}
.html文件:
<html>
<span jwcid="errors"/>
<form jwcid="form">
<table>
<tr>
<td>Weight:</td>
<td><input type="text" jwcid="weight"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="OK"/></td>
</tr>
</table>
</form>
</html>
但是上面的做法比较繁琐,可以采用validator使验证变的简单些,做法如下:
.page规范文件
<page-specification class="com.bjais.Home">
<bean name="delegate" class="org.apache.tapestry.valid.ValidationDelegate"/>
<component id="form" type="Form">
<binding name="listener" value="listener:onSubmit"/>
<binding name="delegate" value="beans.delegate"/>
</component>
<component id="weight" type="TextField">
<binding name="value" value="weight"/>
<binding name="translator" value="translator:number,pattern=#.#"/>
<binding name="validators" value="validators:min=0"/>
<binding name="displayName" value="literal:Weight"/>
</component>
<component id="errors" type="Delegator">
<binding name="delegate" value="beans.delegate.firstError"/>
</component>
</page-specification>
而在.java文件中不用再错数据校验判断了。
在上面的例子中,weight为int,所以需要进行转换,如果用户输入的不是一个数字,那么就会转换失败,这时转换器就会像验证器一样工作,将错误信息记录在验证代理中。
空校验的方法:
<component id="weight" type="TextField">
<binding name="value" value="weight"/>
<binding name="translator" value="translator:number,pattern=#.#"/>
<binding name="validators" value="validators:required,min=0"/>
<binding name="displayName" value="literal:Weight"/>
</component>
也可以加上自定义的校验失败的信息:
<component id="weight" type="TextField">
<binding name="value" value="weight"/>
<binding name="translator" value="translator:number,pattern=#.#"/>
<binding name="validators" value="validators:required[you must enter {0}!],min=0"/>
<binding name="displayName" value="literal:Weight"/>
</component>
还可以和FieldLabel组件一起工作:
<component id="weight" type="TextField">
<binding name="value" value="weight"/>
<binding name="translator" value="translator:number,pattern=#.#"/>
<binding name="validators" value="validators:required[you must enter {0}!],min=0"/>
<binding name="displayName" value="literal:Weight"/>
</component>
<component id="weightLabel" type="FieldLabel">
<binding name="field" value="component:weight"/>
</component>
这样,但验证失败的时候和验证失败的组件关联的fieldLabel也一起发生样式更改,例如颜色变为红色。
validators里面的内容前缀首先是validators:,Validator之间用逗号分隔,每个Validator的格式可以是下面形式
1. name
2. name=value
3. name[message]
4. name[%message-key]
5. name=value[message]
6. name=value[%message-key]
7. $name
其中name为Validator名,如:email, required, max, maxDate, min等等。
value为传入的参数值,如:min=3, max=5等。
message为当该Validator校验失败后显示的Message。
message -key为本地化文件中Message的Key值, 如Tapestry Page Name为Login的话,那么相应的有Login.html,Login.page,Login.properties,Login_zh_CN.properties等,这里面的两个properties文件就是本地化文件。
下面是具体的例子
ValidationExamples.html中
<input type="text" jwcid="minAndMaxWithMessage@TextField"
value="ognl:minAndMaxWithMessage"
translator="translator:number,pattern=#####"
displayName="literal:Min,Max"
validators="validators:min=3[%must-larger-than-3],max=5[Must less than 5]"/></td>
那么在ValidationExamples.properties中为
must-larger-than-3=Field {0} must larger than 3.
需要注意的是,其中的{0}参数会被自动用Field名替换。
$name中的name是对一个bean的引用,该bean可以在Page Specification中定义。
如在ValidationExamples.page中定义为
<bean name="zipValidator" class="org.apache.tapestry.form.validator.Pattern">
<set name="pattern" value="message:zip-code-pattern"/>
<set name="message" value="message:zip-code-message"/>
</bean>
那么在ValidationExamples.html中就可以像下面这样引用。
<input type="text" jwcid="pattern@TextField"
value="ognl:pattern"
displayName="literal:Pattern"
validators="validators:$zipValidator"/>
前台校验的样式
Tapestry4.1使用的是dojo的校验,所以需要加上样式,否则会很难看,需要实现的样式类如下: .alertButton {
width: auto;
border: none;
background-color: #699ED9;
color: #fff;
padding: 0.1em;
border-bottom: 1px solid #5885b6 !important;
border-right: 1px solid #5885b6 !important;
border-top: 1px solid #92b8e2 !important;
border-left: 1px solid #92b8e2 !important;
cursor: hand;
cursor: pointer;
}
.alertDialog {
width: 30em;
border: 2px solid #ff660a;
padding: 1em;
background: #ffffff;
-moz-border-radius: 10px;
}
.alertContent .alertButton {
float: right;
position: relative;
bottom: 1em;
}
.missingList, .invalidList {
padding-bottom: 0.6em;
padding-top: 0.2em;
padding-left: 0.1em;
padding-right: 0.2em;
margin: 0;
}
.missingList {
border-top: 4px solid #bedef4;
}
.invalidList {
border-top: 4px solid #ffaf7e;
}
.missingList li, .invalidList li {
list-style: none;
font-style: italic;
}
.fieldMissing {
background: #bedef4;
}
.fieldInvalid {
background: #ffaf7e;
font-weight: bold;
}
发表评论
-
自由组织Tapestry页面规范文件
2008-02-21 13:46 1084问题的提出: 默认Tapestry的页面模板文件(.html ... -
page specification寻找路径
2008-02-20 18:34 1271Tapestry4的机制是先找page模板,然后根据page模 ... -
页面跳转类组件
2008-02-20 14:46 1689ActionLink组件 页面响应时,创建了一个链接。如果触 ... -
Page对象池参数设置
2008-02-19 15:17 1223The internal pooling of Tapestr ... -
Tapestry简单的ajax实现
2008-02-19 15:15 2111Tapestry4.1.x中内置dojo实现ajax功能,不用 ... -
Tapestry页面属性持久化策略
2008-02-19 14:12 1126tapestry.persist.xml <con ... -
两个特殊的组件:content和remove
2008-02-19 11:27 997在tapestry中,有两个特殊的组件:remove和cont ... -
引用多个样式表的方法
2008-02-19 11:10 767<html jwcid="@Shell&quo ... -
转换器
2008-02-15 13:33 920表单中的元素的值都是字符串,在tapestry中,需要将这些值 ... -
基本组件的使用
2008-02-15 11:56 8801.combo box组件 .page文件: <comp ... -
页面属性
2008-02-15 09:50 905当在页面类中定义了抽象的getter方法时,在页面规范文件中( ... -
默认前缀
2008-02-14 18:31 970在模板文件中(.html),默认的前缀是literal,例如: ... -
解决tapestry中由于使用对象池而造成信息泄露的问题
2008-02-14 17:36 1227在tapestry中,由于每个页面都需要使用一个页面对象,为了 ... -
基础设施对象Infrastructure
2008-02-14 17:13 8531.获取应用程序的虚拟目录名称 String contex ... -
页面跳转汇总
2008-02-14 16:43 10441.表单提交后的页面跳转 表单提交后的页面跳转有三种方法: ... -
Tapestry与Spring和hibernate的集成
2008-01-24 10:21 1514Tapestry4.1与Spring的集成只能通过Hivemi ... -
page规范文件的使用
2008-01-09 15:19 1052一、asset的使用 资源在类路径下: <asset n ... -
国际化与本地化
2008-01-08 14:09 878页面使用: <span jwcid="@Ins ... -
编码问题
2008-01-08 14:06 820在应用程序配置文件中配置 <meta key=" ... -
URL redirect配置
2008-01-08 14:04 1860web.xml中配置: <filter> < ...
相关推荐
在本篇内容中,我们将深入探讨页面校验的使用方法,以及它对于网页开发的重要性。 一、页面校验的基本概念 1. HTML和CSS校验:HTML是网页的结构,CSS是网页的样式。页面校验就是检查这些代码是否符合W3C(World ...
页面校验函数。该函数可以很方便的校验页面上不许为空的项,校验页面输入框Text的合法值,如数字和日期的校验等。如果不许某项为空可以这样设置:申请单位:申请单位;nullStr:false;">。使用该函数只能对页面text...
在网页开发中,js(JavaScript)正则表达式常用于页面校验,确保用户输入的数据符合预设格式,如邮箱、电话号码、日期等。下面我们将深入探讨正则表达式的基础知识,以及如何在JavaScript中应用它们进行页面校验。 ...
传统的身份鉴别机制可能存在被绕过的风险,因此,文章提出了一种新的页面校验技术,以增强系统的安全性。 页面校验技术的核心在于利用Session变量来记录登录用户的用户名和职务信息。当用户登录OA系统后,系统会...
网页中的校验是确保数据质量和用户体验的关键环节,尤其是在前端开发中。正则表达式是实现这些校验的强大工具,能够高效地验证用户输入是否符合预设的格式要求。本资源"网页中的各种校验大全"提供了全面的正则表达式...
Java图形验证码生成工具类是...总之,`java图形验证码生成工具类 web页面校验验证码` 是一个用于创建Web页面安全验证的实用组件,通过自定义尺寸、字符数和干扰线条,可以适应不同的应用场景,并有效地防止自动化攻击。
在IT行业中,页面输入校验是一项至关重要的技术实践,它涉及到用户在网页上提交数据时的数据有效性检查。页面输入校验的主要目标是确保用户输入的数据符合预设的规则,从而防止错误的数据进入系统,提高数据的准确性...
### AmazeUI页面校验功能实现详解 #### 一、背景介绍 AmazeUI是一款优秀的前端框架,它基于HTML5和CSS3,并且兼容多种浏览器。AmazeUI提供了丰富的组件和便捷的功能,使得开发者能够快速地构建出美观、实用的Web...
页面数据校验类 PageValidate
页面数据校验是Web应用程序中的一个关键环节,它有助于确保用户提交的数据符合预期的格式、类型和范围,从而避免了后续处理阶段可能出现的问题。例如,如果一个表单字段预期接收的是电子邮件地址,那么通过前端校验...
5. **校验码检查**:使用Luhn算法或专门的身份证校验公式计算出校验码,并与输入的校验码进行对比。 在JSP页面上,我们可以通过表单收集用户输入的身份证号码,然后通过AJAX异步提交到后台处理。后台Java程序接收到...
1、步骤分析 第一步:确定事件(onsubmit)并为其绑定一个函数 第二步:书写这个函数(获取用户输入的数据&...2、完成注册页面表单校验 <!DOCTYPE html> <html> <head> <meta charset="UTF-8">
压缩包内的"页面校验非常好的例子"文件,很可能是包含了一个或多个示例,展示如何在实际项目中应用`validate.js`进行表单验证。这些示例通常会包括HTML结构、JavaScript代码以及可能的CSS样式,帮助开发者快速理解和...
1. 提高用户体验:使用JavaScript进行页面校验,可以实时地检测用户输入的信息,提高用户体验。 2. 提高安全性:使用Ajax进行服务器端校验,可以防止用户恶意提交信息,提高安全性。 3. 提高开发效率:使用JavaWeb的...
3.页面校验自动生成(必须输入、数字校验、金额校验、时间空间等); 4.封装完善的用户权限和数据字典等基础功能,直接使用无需修改 5.常用共通封装,各种工具类(定时任务,短信接口,邮件发送,Excel导出等),基本满足80%...
纯页面表单校验。修改可以为你所用,自己写的,欢迎鼓励
在IT领域,用户界面的设计与用户体验息息相关,尤其是登录界面,它...同时,为了防止SQL注入等安全风险,服务器端的JSP代码还需要进行参数校验和转义。理解并熟练运用这些技术,对于构建安全、高效的登录系统至关重要。
"飘荡软件.url"则可能是一个快捷方式或者链接,指向该软件的官方网站或者下载页面,用户可以通过这个链接获取更多关于软件的信息或者获取更新版本。 总的来说,CS校验和计算是保证数据完整性和正确性的重要手段,而...
页面校验 1.文本框约束输入 2.表单校验工具库 3.文本框部分内容不让改变 2.下拉框类 <br>1.列表框移动转移 2.select内容过滤 3.下拉框关联 3.导航类 1.TabPage 2....