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

📄 commonsvalidator.java

📁 struts框架的jsf组件的核心实用例子集合
💻 JAVA
字号:
package com.corejsf.validator;import java.io.IOException;import java.io.InputStream;import java.io.Serializable;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import java.text.MessageFormat;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Locale;import java.util.Map;import java.util.MissingResourceException;import java.util.ResourceBundle;import java.util.logging.Level;import java.util.logging.Logger;import javax.faces.application.Application;import javax.faces.application.FacesMessage;import javax.faces.component.UIComponent;import javax.faces.context.ExternalContext;import javax.faces.context.FacesContext;import javax.faces.validator.Validator;import javax.faces.validator.ValidatorException;import org.apache.commons.validator.GenericValidator;import org.apache.commons.validator.ValidatorAction;import org.apache.commons.validator.ValidatorResources;import org.apache.commons.validator.ValidatorResourcesInitializer;public class CommonsValidator implements Validator, Serializable {   private String type;   private String message;   private String arg;   private Boolean client;   private Boolean server;   private Double min;   private Double max;   private Integer minlength;   private Integer maxlength;   private String mask;   private String datePatternStrict;   private transient ValidatorAction validatorAction;   private transient Method validatorMethod;   private transient Class[] paramTypes;   private transient Object validator;   private static Map standardTypes;   private static Logger logger = Logger.getLogger("com.corejsf.validator");   // PROPERTY: type   public void setType(String newValue) { type = newValue; }    public String getType() { return type; }   // PROPERTY: client   public void setClient(Boolean newValue) { client = newValue; }    public Boolean getClient() { return client; }   // PROPERTY: server   public void setServer(Boolean newValue) { server = newValue; }    public Boolean getServer() { return server; }   // PROPERTY: message   public void setMessage(String newValue) { message = newValue; }    // PROPERTY: arg    public void setArg(String newValue) { arg = newValue; }    public String getArg() { return arg; }   // PROPERTY: min   public void setMin(Double newValue) { min = newValue; }    // PROPERTY: max   public void setMax(Double newValue) { max = newValue; }    // PROPERTY: minlength   public void setMinlength(Integer newValue) { minlength = newValue; }    // PROPERTY: maxlength   public void setMaxlength(Integer newValue) { maxlength = newValue; }    // PROPERTY: mask   public void setMask(String newValue) { mask = newValue; }    // PROPERTY: datePatternStrict   public void setDatePatternStrict(String newValue) {       datePatternStrict = newValue;   }    public Object[] getParams() {       ArrayList r = new ArrayList();      if (min != null) r.add(min);      if (max != null) r.add(max);      if (minlength != null) r.add(minlength);      if (maxlength != null) r.add(maxlength);      if (mask != null) r.add(mask);      if (datePatternStrict != null) r.add(datePatternStrict);      return r.toArray();   }         public String[] getParamNames() {       ArrayList r = new ArrayList();      if (min != null) r.add("min");      if (max != null) r.add("max");      if (minlength != null) r.add("minlength");      if (maxlength != null) r.add("maxlength");      if (mask != null) r.add("mask");      if (datePatternStrict != null) r.add("datePatternStrict");      return (String[]) r.toArray(new String[r.size()]);   }   public static ValidatorAction getValidatorAction(String name) {      final String VALIDATOR_RESOURCES_KEY = "com.corejsf.validator.resources";      FacesContext context = FacesContext.getCurrentInstance();      ExternalContext external = context.getExternalContext();      Map applicationMap = external.getApplicationMap();      ValidatorResources validatorResources          = (ValidatorResources) applicationMap.get(VALIDATOR_RESOURCES_KEY);      if (validatorResources == null) {          InputStream in = external.getResourceAsStream("/WEB-INF/validator-rules.xml");         validatorResources = new ValidatorResources();         try {            ValidatorResourcesInitializer.initialize(validatorResources, in);            applicationMap.put(VALIDATOR_RESOURCES_KEY, validatorResources);         } catch (IOException ex) {            logger.log(Level.SEVERE, "can't initialize resources", ex);            return null;         }      }      return validatorResources.getValidatorAction(name);   }   public ValidatorAction getValidatorAction() {      if (validatorAction == null) validatorAction = getValidatorAction(type);      return validatorAction;   }   public void validate(FacesContext context, UIComponent component,       Object value) {      if (Boolean.FALSE.equals(server)) return;      initValidation();           Object[] p = getParams();      Object[] params = new Object[p.length + 1];      params[0] = convert(value, paramTypes[0]);      for (int i = 1; i < params.length; i++)          params[i] = convert(p[i - 1], paramTypes[i]);      try {         Boolean r = (Boolean) validatorMethod.invoke(validator, params);                  if (r.equals(Boolean.FALSE)) {            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,               getErrorMessage(value, context), null);            throw new ValidatorException(message);         }      } catch (IllegalAccessException ex) {         logger.log(Level.SEVERE, "can't invoke validator", ex);      } catch (InvocationTargetException ex) {         logger.log(Level.SEVERE, "can't invoke validator", ex);      }   }   public void initValidation() {      if (validatorMethod != null) return;           getValidatorAction();            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();      if (classLoader == null) classLoader = getClass().getClassLoader();      try {         List params = validatorAction.getMethodParamsList();         paramTypes = new Class[params.size()];         for (int i = 0; i < paramTypes.length; i++) {            String paramTypeName = (String) params.get(i);            paramTypes[i] = (Class) standardTypes.get(paramTypeName);            if (paramTypes[i] == null)                paramTypes[i] = classLoader.loadClass(paramTypeName);         }               Class c = classLoader.loadClass(validatorAction.getClassname());               validatorMethod             = c.getMethod(validatorAction.getMethod(), paramTypes);         if (!Modifier.isStatic(validatorMethod.getModifiers()))             validator = c.newInstance();      } catch (ClassNotFoundException ex) {         logger.log(Level.SEVERE, "can't load validator or param class", ex);      } catch (NoSuchMethodException ex) {         logger.log(Level.SEVERE, "can't get validator method", ex);      } catch (InstantiationException ex) {         logger.log(Level.SEVERE, "can't instantiate validator", ex);      } catch (IllegalAccessException ex) {         logger.log(Level.SEVERE, "can't instantiate validator", ex);      }   }   public String getErrorMessage(Object value, FacesContext context) {      final String DEFAULT_BUNDLE_NAME = "com.corejsf.validator.messages";      Locale locale = context.getViewRoot().getLocale();      String msg = message;      if (msg == null) {          String msgkey = validatorAction.getMsg();         ClassLoader loader = Thread.currentThread().getContextClassLoader();         if (loader == null) loader = getClass().getClassLoader();         Application app = context.getApplication();         String appBundleName = app.getMessageBundle();         if (appBundleName != null) {            ResourceBundle bundle                = ResourceBundle.getBundle(appBundleName, locale, loader);            if (bundle != null)               try {                  msg = bundle.getString(msgkey);               } catch (MissingResourceException ex) {               }         }         if (msg == null) {                        ResourceBundle bundle                = ResourceBundle.getBundle(DEFAULT_BUNDLE_NAME, locale, loader);            if (bundle != null)               try {                  msg = bundle.getString(msgkey);               } catch (MissingResourceException ex) {               }         }      }      Object[] p = getParams();      Object[] params = new Object[p.length + 1];      params[0] = value;      for (int i = 1; i < params.length; i++)          params[i] = p[i - 1];      msg = new MessageFormat(msg, locale).format(params);      return msg;   }      private static Object convert(Object obj, Class cl) {      if (cl.isInstance(obj)) return obj;      if (cl == String.class) return "" + obj;      if (obj instanceof String) {         String str = (String) obj;         if (cl == boolean.class) return Boolean.valueOf(str);         if (cl == byte.class) return new Byte(str);         if (cl == char.class) return new Character(str.charAt(0));         if (cl == double.class) return new Double(str);         if (cl == float.class) return new Float(str);         if (cl == int.class) return new Integer(str);         if (cl == long.class) return new Long(str);         if (cl == short.class) return new Short(str);      } else if (obj instanceof Number) {         Number num = (Number) obj;         if (cl == byte.class) return new Byte(num.byteValue());         if (cl == double.class) return new Double(num.doubleValue());         if (cl == float.class) return new Float(num.floatValue());         if (cl == int.class) return new Integer(num.intValue());         if (cl == long.class) return new Long(num.longValue());         if (cl == short.class) return new Short(num.shortValue());               }      return obj;   }   // these two methods are referenced in validator-utils.xml   public static boolean isSupplied(String str) {      return str.trim().length() > 0;   }   public static boolean isDate(String d, String datePatternStrict) {      return GenericValidator.isDate(d, datePatternStrict, true);   }   static {      standardTypes = new HashMap();      standardTypes.put("boolean", boolean.class);      standardTypes.put("byte", byte.class);      standardTypes.put("char", char.class);      standardTypes.put("double", double.class);      standardTypes.put("float", float.class);      standardTypes.put("int", int.class);      standardTypes.put("long", long.class);      standardTypes.put("short", short.class);      standardTypes.put("java.lang.String", String.class);   }}

⌨️ 快捷键说明

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