⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 validatormap.java

📁 这个是使用java开发的一个平台
💻 JAVA
字号:
package com.exp.web.util.validator;

import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.Vector;

import com.exp.fcl.xml.EXPXMLNode;
import com.exp.web.util.FormBean;

public class ValidatorMap {
    protected static final Map validators = new HashMap();

    static {
        registerValidator("length", LengthValidator.class);
        registerValidator("ulength", ULengthValidator.class);
        registerValidator("range", RangeValidator.class);
        registerValidator("digist", DigistValidator.class);
        registerValidator("equal", EqualsValidator.class);
        registerValidator("digiststring", DigistStringValidator.class);
        registerValidator("email", EMailValidator.class);
        registerValidator("hasdata", HasDataValidator.class);
        registerValidator("regex", RegexValidator.class);
        registerValidator("custom", CustomValidatorWrapper.class);
    }

    public static void registerValidator(String type, Class cls) {
        validators.put(type.toLowerCase(), cls);
    }

    public static BaseValidator getValidator(String type) {
        Class cls = (Class) validators.get(type.toLowerCase());
        try {
            return (BaseValidator) cls.newInstance();
        } catch (Throwable thr) {
            thr.printStackTrace();
        }
        return null;
    }

    public ValidatorMap(EXPXMLNode validators) {
        int nCount = validators.getChildNodesCount();
        for (int i = 0; i < nCount; i++) {
            EXPXMLNode actionNode = validators.getChildNode(i);
            String actionName = actionNode.getNodeName();
            String formName = actionNode.getAttributeValue("form");
            String lowerActionName = actionName.toLowerCase();
            //设置验证集
            this.actionValidators.put(lowerActionName, ValidatorMap
                    .getValidators(actionNode));
            //设置前端校验脚本代码
            this.frontChecks.put(lowerActionName, this.genJavaScript(formName,
                    lowerActionName));
        }
    }

    /**
     * 得到定义所有验证定义,针对每个事件
     * 
     * @param parent
     * @return
     */
    static Vector getValidators(EXPXMLNode parent) {
        EXPXMLNode validator = null;
        Vector vect = new Vector();
        int nSize = parent.getChildNodesCount();
        for (int j = 0; j < nSize; j++) {
            validator = parent.getChildNode(j);
            String type = validator.getAttributeValue("type");

            if (type.equalsIgnoreCase("ref")) {
                RefValidator refValidator = new RefValidator();
                refValidator.setValidatorNode(validator);
                EXPXMLNode refNode = refValidator.getRefNode();
                if (refNode != null) {
                    Vector vectRef = ValidatorMap.getValidators(refNode);
                    if (vectRef != null) {
                        vect.addAll(vectRef);
                    }
                }
            } else {
                BaseValidator baseValidator = ValidatorMap.getValidator(type);
                baseValidator.setValidatorNode(validator);
                if (baseValidator != null) {
                    vect.add(baseValidator);
                }
            }
        }
        return vect;
    }

    private Hashtable actionValidators = new Hashtable();

    private Hashtable frontChecks = new Hashtable();

    /**
     * 执行验证
     * 
     * @param actionName
     *            事件名称
     * @param formBean
     *            当前FormBean
     * @return 错误消息,如果无错误消息,则为null
     */
    public Vector checkValid(String actionName, FormBean formBean) {
        Vector vect = getValidators(actionName);
        if (vect != null) {
            int nSize = vect.size();
            BaseValidator validator = null;
            if (nSize > 0) {
                Vector messages = new Vector();
                for (int i = 0; i < nSize; i++) {
                    validator = (BaseValidator) vect.get(i);
                    String target = validator.getTarget();
                    if (!target.equals("")) {
                        String temp = formBean.getString(target);
                        if (temp.equals("") && validator.isEmptyJump()) {
                            continue;
                        }
                    }
                    if (!validator.checkValid(formBean)) {
                        messages.add(validator.getMessage());
                    }
                }
                if (messages.size() > 0) {
                    return messages;
                }
            }
        }
        return null;
    }

    /**
     * 得到针对某个事件的验证集合
     * 
     * @param actionName
     *            事件名称
     * @return
     */
    private Vector getValidators(String actionName) {
        String realActionName = actionName;
        if (actionName.equals("")) {
            realActionName = "default";
        }
        Vector vect = (Vector) this.actionValidators.get(realActionName
                .toLowerCase());
        return vect;
    }

    /**
     * 得到已定义的需要验证的action名称数组
     * 
     * @return
     */
    public String[] getValidatorActions() {
        int nSize = this.actionValidators.size();
        String[] rets = new String[nSize];
        Enumeration enum = this.actionValidators.keys();
        while (enum.hasMoreElements()) {
            rets[nSize - 1] = (String) enum.nextElement();
            nSize--;
        }
        return rets;
    }

    /**
     * 得到针对某个事件的前端验证脚本
     * 
     * @param actionName
     *            事件名称
     * @return 脚本代码,如果没有脚本,则返回空字符串
     */
    public String getJavaScript(String actionName) {
        String script = (String) this.frontChecks.get(actionName.toLowerCase());
        if (script != null) {
            return script;
        } else {
            return "";
        }
    }

    /**
     * 为某事件生成前端数据校验脚本
     * 
     * @param formName
     *            该事件所属的窗体名称
     * @param actionName
     *            事件名称
     * @return 生成后的脚本代码
     */
    private String genJavaScript(String formName, String actionName) {
        if (formName != null && !formName.equals("")) {
            Vector vect = this.getValidators(actionName);
            if (vect == null) {
                return "";
            } else {
                int nSize = vect.size();
                StringBuffer buf = new StringBuffer();
                for (int i = 0; i < nSize; i++) {
                    BaseValidator validator = (BaseValidator) vect.get(i);
                    validator.setFormName(formName);
                    String script = validator.getJavaScript();
                    if (script != null) {
                        buf.append(script);
                        buf.append("\n");
                    }
                }
                return buf.toString();
            }
        } else {
            return "";
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -