今天费了一天时间就是做这个东西,原理很简单,就是用 JSP 在页面的开始部分生成一段代码, 如 errorcheck.jsp 中所示,但程序太长,还是费了我不少时间来改写。
主程序是名为 ErrorCheck.Java ,有了这个 ErrorCheck 的 Bean,我们就再也不用为了表单校验去 写那一大堆烦人的 JavaScript 代码了。ErrorCheck 类已帮我们生成了几乎所有你将会用到的校验方法, 如是否为数字,长度的校验,是否为合法email等,你只需在 jsp 页面里调用相应的函数就可以了。
目前一共有七个函数:
一 检测是否为数字 //输入输入框名和错误提示信息 numericCheck(String inputName,String errorMsg);
二 检测email是否合法 //输入输入框名和错误提示信息 emailCheck(String inputName,String errorMsg);
三 检测电话号码是否合法 //输入输入框名和错误提示信息 telCheck(String inputName,String errorMsg);
四 检测字串长度是否在规定范围那内 //输入输入框名,错误提示信息,最小长度,最大长度 lengthCheck(String inputName,String errorMsg,int min,int max);
五 检测字串中是否不含禁止的字串 //输入输入框名,错误提示信息,禁止字串 denyStrCheck(String inputName,String errorMsg,String str);
六 检测字串中是否含给定字串 //输入输入框名,错误提示信息,指定字串 stringCheck(String inputName,String errorMsg,String str);
七 检测日期格式是否为 'yyyy-mm-dd' //输入输入框名和错误提示信息 dateCheck(String inputName,String errorMsg);
只要调用一下这个bean,然后用setFromName()设定你的表单名,再调用以上函数, 最后 out.println(yourID.ErrorCheckScript()),就输出了一段 JavaScript 代码了,当然了, 别忘了这个 <form name=myForm onsubmit='return errorCheck();'>
ok,just enjoy it,今天太累,不想多少,有任何意见请写信给我或在我主页上留言。
注:我调试 errorcheck.jsp 的时候因服务器的问题不知为何不能用 usebean,setProperty 的方法, 只好 new 了一下,我想你们是应该可以用useBean和setProperty的,自己改一下吧。
===================================== errorcheck.jsp =====================================
<%@ page language='java' import='dbclass.*' %> <%@ page contentType='text/html; charset=gb2312' %> <jsp:useBean id='cc' scope='page' class='dbclass.ErrorCheck' />
<% ErrorCheck ec = new ErrorCheck(); ec.setFormName('myForm'); ec.numericCheck('number','The Number you input is invalid!'); ec.emailCheck('email','The Email you input is invalid!'); ec.telCheck('tel','The telephone you input is invalid!'); ec.lengthCheck('strlen','The string you input in the fourth field in not between 6-8',6,8); ec.denyStrCheck('nojeru','The fifith field must not contain ´jeru´','jeru'); ec.stringCheck('jeru','The sixth field must not null and contian ´jeru´','jeru'); ec.dateCheck('date','The date you input is invalid,should be yyyy-mm-dd'); out.println(ec.ErrorCheckScript()); %>
<html> <body style='font-size:9pt; font-family:Arial;'> <h1>Errocheck Test</h1> <hr> <form name=myForm onsubmit='return errorCheck();'>
input a number:<br> <input type='text' name='number'><p>
input a emial:<br> <input type='text' name='email'><p>
input a telephone:<br> <input type='text' name='tel'><p>
input a string (length should between 6-8):<br> <input type='text' name='strlen'><p>
input a string (shoulde not contain 'jeru'):<br> <input type='text' name='nojeru'><p>
input a string (must contain 'jeru'):<br> <input type='text' name='jeru'><p>
input a date (yyyy-mm-dd):<br> <input type='text' name='date'><p>
<br><input type='submit' name='submit' value='go'> </form> </body> </html>
===================================== ErrorCheck.java =====================================
package dbclass; /** * ErrorCheck v 1.0 * * 这个类是用来在客户端生成 JavaScript 代码来校验表单的 * 原是版本是同事 Macro 用 PHP 写的,我感觉十分好用,再也 * 不用再为那些表单区写烦人的 javascript 代码拉,感谢他! * 这次我用 Java 改写,封装成一个类,并修复了少许的 bug,加 * 多了一条校验的功能,它的扩展性很好,以后可能会继续完善。 * * Mender : * Jeru Liu * Homepage : * http://www.cyberlabs.com/~jeru/ * Email: jeru@163.net * */
import java.io.*;
public class ErrorCheck {
/* public: the javascript string */ String errorCheckStr;
/* public: the form name you used */ public String formName;
public void setFormName(String formName) { this.formName = formName; }
/*************************************************************************** * public: constructor functions * 构造函数 ***************************************************************************/ public ErrorCheck() { this.errorCheckStr = '<script ID=clientEventHandlersJS language=javascript>' + 'n' + '<!--' + 'n'; this.neededFunction(); // load the needed functions this.errorCheckStr += 'function errorCheck() {' + 'n'; }
作者:刘湛 jeru@163.net
|