`

页面校验

阅读更多
前台校验:
采用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;
}
分享到:
评论

相关推荐

    页面校验的使用说明

    在本篇内容中,我们将深入探讨页面校验的使用方法,以及它对于网页开发的重要性。 一、页面校验的基本概念 1. HTML和CSS校验:HTML是网页的结构,CSS是网页的样式。页面校验就是检查这些代码是否符合W3C(World ...

    页面校验函数。该函数可以很方便的校验页面上不许为空的项,校验页面输入框Text的合法值,如数字和日期的校验等

    页面校验函数。该函数可以很方便的校验页面上不许为空的项,校验页面输入框Text的合法值,如数字和日期的校验等。如果不许某项为空可以这样设置:申请单位:申请单位;nullStr:false;"&gt;。使用该函数只能对页面text...

    正则表达式的页面校验js(附例子)

    在网页开发中,js(JavaScript)正则表达式常用于页面校验,确保用户输入的数据符合预设格式,如邮箱、电话号码、日期等。下面我们将深入探讨正则表达式的基础知识,以及如何在JavaScript中应用它们进行页面校验。 ...

    基于Linux Apache Mysql PHP的OA系统页面校验技术.pdf

    传统的身份鉴别机制可能存在被绕过的风险,因此,文章提出了一种新的页面校验技术,以增强系统的安全性。 页面校验技术的核心在于利用Session变量来记录登录用户的用户名和职务信息。当用户登录OA系统后,系统会...

    网页中的各种校验大全

    网页中的校验是确保数据质量和用户体验的关键环节,尤其是在前端开发中。正则表达式是实现这些校验的强大工具,能够高效地验证用户输入是否符合预设的格式要求。本资源"网页中的各种校验大全"提供了全面的正则表达式...

    java图形验证码生成工具类 web页面校验验证码

    Java图形验证码生成工具类是...总之,`java图形验证码生成工具类 web页面校验验证码` 是一个用于创建Web页面安全验证的实用组件,通过自定义尺寸、字符数和干扰线条,可以适应不同的应用场景,并有效地防止自动化攻击。

    页面输入校验

    在IT行业中,页面输入校验是一项至关重要的技术实践,它涉及到用户在网页上提交数据时的数据有效性检查。页面输入校验的主要目标是确保用户输入的数据符合预设的规则,从而防止错误的数据进入系统,提高数据的准确性...

    amazeui页面校验功能的实现代码

    ### AmazeUI页面校验功能实现详解 #### 一、背景介绍 AmazeUI是一款优秀的前端框架,它基于HTML5和CSS3,并且兼容多种浏览器。AmazeUI提供了丰富的组件和便捷的功能,使得开发者能够快速地构建出美观、实用的Web...

    页面数据校验类 PageValidate

    页面数据校验类 PageValidate

    页面的数据校验JS和HTML

    页面数据校验是Web应用程序中的一个关键环节,它有助于确保用户提交的数据符合预期的格式、类型和范围,从而避免了后续处理阶段可能出现的问题。例如,如果一个表单字段预期接收的是电子邮件地址,那么通过前端校验...

    JAVA+jsp身份证验证的合法性

    5. **校验码检查**:使用Luhn算法或专门的身份证校验公式计算出校验码,并与输入的校验码进行对比。 在JSP页面上,我们可以通过表单收集用户输入的身份证号码,然后通过AJAX异步提交到后台处理。后台Java程序接收到...

    JavaScript 完成注册页面表单校验的实例

    1、步骤分析 第一步:确定事件(onsubmit)并为其绑定一个函数 第二步:书写这个函数(获取用户输入的数据&...2、完成注册页面表单校验 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt;

    web开发校验validate.js

    压缩包内的"页面校验非常好的例子"文件,很可能是包含了一个或多个示例,展示如何在实际项目中应用`validate.js`进行表单验证。这些示例通常会包括HTML结构、JavaScript代码以及可能的CSS样式,帮助开发者快速理解和...

    JavaWeb表单注册界面的实现方法

    1. 提高用户体验:使用JavaScript进行页面校验,可以实时地检测用户输入的信息,提高用户体验。 2. 提高安全性:使用Ajax进行服务器端校验,可以防止用户恶意提交信息,提高安全性。 3. 提高开发效率:使用JavaWeb的...

    JEECG-FRAMEWORK

    3.页面校验自动生成(必须输入、数字校验、金额校验、时间空间等); 4.封装完善的用户权限和数据字典等基础功能,直接使用无需修改 5.常用共通封装,各种工具类(定时任务,短信接口,邮件发送,Excel导出等),基本满足80%...

    纯页面表单校验

    纯页面表单校验。修改可以为你所用,自己写的,欢迎鼓励

    登陆界面用户输入信息验证

    在IT领域,用户界面的设计与用户体验息息相关,尤其是登录界面,它...同时,为了防止SQL注入等安全风险,服务器端的JSP代码还需要进行参数校验和转义。理解并熟练运用这些技术,对于构建安全、高效的登录系统至关重要。

    CS校验计算器

    "飘荡软件.url"则可能是一个快捷方式或者链接,指向该软件的官方网站或者下载页面,用户可以通过这个链接获取更多关于软件的信息或者获取更新版本。 总的来说,CS校验和计算是保证数据完整性和正确性的重要手段,而...

    js效果页面实例及说明文档包html版

    页面校验 1.文本框约束输入 2.表单校验工具库 3.文本框部分内容不让改变 2.下拉框类 &lt;br&gt;1.列表框移动转移 2.select内容过滤 3.下拉框关联 3.导航类 1.TabPage 2....

Global site tag (gtag.js) - Google Analytics