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. uva--165(邮资问题,dp)

    题意: 某国家发行k种不同面值的邮票,而且规定每张信封上最多仅仅能贴h张邮票. 公式n(h,k)表示用从k中面值的邮票中选择h张邮票,能够组成面额为连续的1.2.3,--n. n是能达到的最大面值之和 ...

  2. POJ9384 迷宫(基金会BFS)

    本文来源于:http://blog.csdn.net/svitter 称号:让你从(0, 0)走到(4,4).而且输出路径. 输入数据:二位数组的迷宫:输出数据:路径: 题解:简单的BFS 注意: 1 ...

  3. JGroups 入门实践(转)

    前言 JGroups是一个开源的纯java编写的可靠的群组通讯工具.其工作模式基于IP多播,但可以在可靠性和群组成员管理上进行扩展.其结构上设计灵活,提供了一种灵活兼容多种协议的协议栈. JGroup ...

  4. ubuntu突然卡住

    ctrl+alt+f1.进username和password.然后进入: killall gnome-sesseion sudo pkill X 版权声明:本文博主原创文章,博客,未经同意不得转载.

  5. 第十二章——SQLServer统计信息(3)——发现过期统计信息并处理

    原文:第十二章--SQLServer统计信息(3)--发现过期统计信息并处理 前言: 统计信息是关于谓词中的数据分布的主要信息源,如果不知道具体的数据分布,优化器不能获得预估的数据集,从而不能统计需要 ...

  6. rm-rf 恢复过程中滥用

    多DBA一定rm -rf讨厌它,也许有一天自己将数据库,以消除一个中午,然后.那么就没有一个--这种情况下,--这个不幸真的发生,你真的无药可救?不必要,有解决方法.也许你遇到不幸时,有一天.你可以用 ...

  7. Windows Phone获取WiFi BSSID

    原文:Windows Phone获取WiFi BSSID BSSID,一种特殊的Ad-hoc LAN的应用,也称为Basic Service Set (BSS),一群计算机设定相同的BSS名称,即可自 ...

  8. u_boot启动过程中的具体分析(1)

    闭上眼睛,细致的回顾一下从NAND FLASH 启动的整个流程,首先,当我们打开板子的时候,先执行的就是嵌入在芯片上的iROM,它的作用就是为了把.NAND Flash 中的bootloader的一部 ...

  9. 浅谈Hybrid技术的设计与实现(转)

    前言 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发效率的要求,这个时候使用IOS&Andriod开发一个APP似乎成本有点过高了,而H5的低成本.高效率.跨平台等特性 ...

  10. mysql导出和导入命令更改数据库名称数据库

    概要 mysql 数据库导入和导出,有两种方法 1)从试点SQL脚本.导入(导入导出又分两种:1. 命令. 2. 工具.这里我们仅仅介绍命令). 2)直接拷贝数据库文件(此方法不推荐). 一.mysq ...