Validator是JFinal框架中的校验组件,在Validator类中提供了我们经常使用的校验方法,而Validator本身实现了Interceptor接口,所以Validator也相当于一个拦截器,详细使用例如以下:

比方登录时检验username和password是否为空,LoginValidator类

package com.tenghu.core.validator;
import com.jfinal.core.Controller;
import com.jfinal.validate.Validator;
/**
* 登录校验器
* @author Arvin
*
*/
public class LoginValidator extends Validator{
@Override
protected void validate(Controller c) {
//校验输入的信息是否为空
validateRequiredString("name", "nameMsg", "请输入username");
validateRequiredString("password", "pwdMsg", "请输入密码");
}
@Override
protected void handleError(Controller c) {
c.render("login.html");
}
}

这样一个简单的登录校验器算是完毕了,接下来该怎么使用呢,非常easy,比方登录时提交的处理方法是login(),使用JFinal提供的@Before注解,就能够使用检验器,例如以下:

@Before(LoginValidator.class)
public void login(){
String username=getPara("name");
String password=getPara("password");
if("admin".equals(username)&&"admin".equals(password)){
renderText("登录成功");
}else{
renderText("登录失败");
}
}

当登录时提交到该方法,首先进入检验器验证提交的字段是否合法,假设不合法,那么校验器返回定义的页面,合法则进入login()方法中继续执行,这里的login()是在实现Controller类中。

在HTML代码中显示错误信息使用EL表达式,输入校验时的第二个变量就可以:

<form action="login" method="post">
username:<input type="text" name="name"/>${nameMsg!''}<br/>
密码:<input type="password" name="password"/>${pwdMsg!''}<br/>
<input type="submit" value="登录"/>
</form>

除了验证值是否为空,还有其它的验证方法,如:

//校验点子邮箱是否正确,这里不用去管验证邮箱的正則表達式,在源码中已经实现
validateEmail("email", "emailMsg", "电子邮箱格式错误");
//验证URL是否正确
validateUrl("url", "urlMsg", "URL错误");
//自己定义正則表達式验证电话号码
<span style="white-space:pre"> </span>validateRegex("phone", "\\b(1[3,5,7,8,9]\\d{9})\\b", "phoneKey", "电话号码格式错误");

这里仅仅是列了两个平时经常使用的,须要其它的能够自己上源码中查看,除了Validator类中的验证,我们也能够自定义类继承与Validator类,编写自己的校验

自己定义校验类,BaseValidator,该类也为抽象类

package com.tenghu.core.validator;
import com.jfinal.validate.Validator; public abstract class BaseValidator extends Validator{
//校验电话号码正則表達式
private static final String phonePattern="\\b(0(\\d{2,3})-\\d{6,9})\\b";
//校验手机号码正則表達式
private static final String mobilePattern="\\b(1[3,5,7,8,9]\\d{9})\\b";
//校验电话手机号码正則表達式
private static final String phoneMobilePattern="\\b((1[3,5,7,8,9]\\d{9})|(0(\\d{2,3})-\\d{6,9}))\\b"; /**
* 校验电话号码
* @param field 校验字段
* @param errorKey
* @param errorMsg
*/
protected void validatePhonePattern(String field,String errorKey,String errorMsg){
validateRegex(field, phonePattern, false, errorKey, errorMsg);
} /**
* 验证手机号码
* @param field
* @param errorKey
* @param errorMsg
*/
protected void validateMobilePattern(String field,String errorKey,String errorMsg){
validateRegex(field, mobilePattern, false, errorKey, errorMsg);
} /**
* 验证电话手机号码
* @param field
* @param errorKey
* @param errorMsg
*/
protected void validatePhoneMobilePattern(String field,String errorKey,String errorMsg){
validateRegex(field, phoneMobilePattern, false, errorKey, errorMsg);
} }

主要的JFinal框架的Validator算是完毕了,初次匝道,说漏了地方,欢迎拍砖

使用JFinal框架中Validator的更多相关文章

  1. jfinal框架新手使用之路及开发心得

    从接触jfinal这个框架到现在差不多也有一个的时间了,因为之前接触的都是像spring ,springMVC,mybatis,struts2,hibernate这种传统,大多数公司都在用的这种框架. ...

  2. 问题:JFinal框架使用FreeMarker渲染视图报错

    本人用的是JFinal-3.4. 问题描述: 在JFinal框架中使用FreeMarker渲染视图时,报 Caused by: java.lang.ClassNotFoundException: fr ...

  3. Hibernate Validator验证框架中@NotEmpty、@NotBlank、@NotNull 的区别

    Hibernate Validator验证框架中@NotEmpty.@NotBlank.@NotNull的主要使用情况 @NotEmpty  用在集合类上面 @NotBlank   用在String上 ...

  4. jfinal框架教程-学习笔记(二)

    上一节介绍了jfinal框架的简单搭建,这节通过一个小例子了解jfinal的结构和特点 先上图 1.建数据库(我用的是oracle数据库,其他的相对也差不多) -- Create table crea ...

  5. jfinal框架教程-学习笔记

    jfinal框架教程-学习笔记 JFinal  是基于 Java  语言的极速  WEB  + ORM  开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restfu ...

  6. Jfinal框架是什么框架?适用于什么项目呢?

    Jfinal框架是什么框架?适用于什么项目呢? jfinal 基于spring MVC研发的框架,操作简单.节省代码,适用于所有web项目.适合中小型项目开发.10分钟写出一个页面的增删改查.目前所在 ...

  7. jfinal框架教程

    jfinal框架教程 下面通过一个小例子了解jfinal的结构和特点 1.建数据库(我用的是oracle数据库,其他的相对也差不多) -- Create table create table CLAS ...

  8. jfinal框架学习过程

    刚刚学习jfinal,通过一天左右的时间大体上理解了这个框架的用法,我对他的理解是JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功 ...

  9. jfinal框架的初级学习

    1.同strust2,使用jfinal框架首先需要在web.xml配置自己的过滤器(com.jfinal.core.JFinalFilter),并初始化JFinalConfig类. <filte ...

随机推荐

  1. webstorm创建nodejs + express + jade 的web 项目

    webstorm创建nodejs + express + jade 的web 项目 前简单了解过nodejs,觉得用nodejs来做个网站也太麻烦了,要自己拼html的字符串返回,这能做网站嘛? 最近 ...

  2. GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理(转)

    如何获取图片对应的base64字符串呢? 1:使用代码获取: 运行下面代码 var reader = new FileReader(), htmlImage; reader.onload = func ...

  3. MVC—WebAPI(调用、授权)

    ASP.NET MVC—WebAPI(调用.授权)   本系列目录:ASP.NET MVC4入门到精通系列目录汇总 微软有了Webservice和WCF,为什么还要有WebAPI? 用过WCF的人应该 ...

  4. URL压缩算法的短地址

    时下,短网址应用已经在全国各大微博上開始流行了起来.比如QQ微博的url.cn,新郎的t.cn等. 我们在新浪微博上公布网址的时候.微博会自己主动判别网址.并将其转换,比如:http://t.cn/h ...

  5. CGI原理解析系列之中的一个----CGI怎样获取WEBserver数据

    //gcc get_post.c -o get_post.ums; #include <stdio.h> #include <stdlib.h> #include <un ...

  6. 读改善c#代码157个建议:建议4~6

    目录: 建议4:TryParse比Parse好 建议5:使用int?确保值类型也可以为null 建议6:区别 readonly 和 const 的用法 一.建议4:TryParse比Parse 好 T ...

  7. swift 笔记 (十九) —— 协议

    协议(Protocols) 协议仅是用定义某些任务或者是功能必须的方法和属性. 类似于java里的interface的作用.但协议并不会实现详细的功能. 我猜这个名字源于OO中提到的"契约& ...

  8. VB.Net出口Excel原则

        在VB机房的版本中,我们已经暴露导出Excel特征,此功能已重新接触到不同的理解 一.原理 要实现导出Excel的功能,首先要引用命名空间,目的是能够使用该命名空间下的方法和类 Imports ...

  9. Android: ADT 23.0.2

    http://pan.baidu.com/s/1gdnBUUJ 版权声明:本文博主原创文章.博客,未经同意不得转载.

  10. InstallShield安装包中集成第三方安装包的方案选择

    原文:InstallShield安装包中集成第三方安装包的方案选择[转]   我们在制作安装包时,有些情况下会涉及第三方安装的集成,这里将讨论如何调用安装第三方包,以及需要注意的事项. 第三方安装包的 ...