예제 #1
0
  /**
   * Validates that two fields match.
   *
   * @param bean
   * @param va
   * @param field
   * @param errors
   * @param request
   * @return boolean
   */
  public static boolean validateTwoFields(
      Object bean,
      ValidatorAction va,
      Field field,
      ActionMessages errors,
      HttpServletRequest request) {
    String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
    String sProperty2 = field.getVarValue("secondProperty");
    String value2 = ValidatorUtils.getValueAsString(bean, sProperty2);

    if (!GenericValidator.isBlankOrNull(value)) {
      try {
        if (!value.equals(value2)) {
          errors.add(field.getKey(), Resources.getActionMessage(request, va, field));

          return false;
        }
      } catch (Exception e) {
        errors.add(field.getKey(), Resources.getActionMessage(request, va, field));

        return false;
      }
    }

    return true;
  }
예제 #2
0
  public static boolean validate(
      Object bean,
      ValidatorAction va,
      Field field,
      ActionMessages errors,
      HttpServletRequest request,
      ServletContext application) {

    String valueString = ValidatorUtils.getValueAsString(bean, field.getProperty());

    String sProperty2 = ValidatorUtils.getValueAsString(bean, field.getVarValue("month"));
    String sProperty3 = ValidatorUtils.getValueAsString(bean, field.getVarValue("day"));

    if (((valueString == null) && (sProperty2 == null) && (sProperty3 == null))
        || ((valueString.length() == 0)
            && (sProperty2.length() == 0)
            && (sProperty3.length() == 0))) {
      // errors.add(field.getKey(),Resources.getActionError(request, va,
      // field));
      return true;
    }

    Integer year = null;
    Integer month = null;
    Integer day = null;

    try {
      year = new Integer(valueString);
      month = new Integer(sProperty2);
      day = new Integer(sProperty3);
    } catch (NumberFormatException e) {
      errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
      return false;
    }

    if (!GenericValidator.isBlankOrNull(valueString)) {
      if (!Data.validDate(day, month, year)
          || year == null
          || month == null
          || day == null
          || year.intValue() < 1
          || month.intValue() < 0
          || day.intValue() < 1) {
        errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
      }

      return false;
    }

    return true;
  }
예제 #3
0
  /**
   * Initialize the <code>Validator</code> to perform validation.
   *
   * @param key The key that the validation rules are under (the form elements
   * name attribute).
   * @param bean The bean validation is being performed on.
   * @param application servlet context
   * @param request The current request object.
   * @param errors The object any errors will be stored in.
   * @param page This in conjunction with  the page property of a
   * <code>Field<code> can control the processing of fields.  If the field's
   * page is less than or equal to this page value, it will be processed.
   */
  public static Validator initValidator(
      String key,
      Object bean,
      ServletContext application,
      HttpServletRequest request,
      ActionMessages errors,
      int page) {

    ValidatorResources resources = Resources.getValidatorResources(application, request);

    Locale locale = RequestUtils.getUserLocale(request, null);

    Validator validator = new Validator(resources, key);
    validator.setUseContextClassLoader(true);

    validator.setPage(page);

    validator.setParameter(SERVLET_CONTEXT_PARAM, application);
    validator.setParameter(HTTP_SERVLET_REQUEST_PARAM, request);
    validator.setParameter(Validator.LOCALE_PARAM, locale);
    validator.setParameter(ACTION_MESSAGES_PARAM, errors);
    validator.setParameter(Validator.BEAN_PARAM, bean);

    return validator;
  }
예제 #4
0
  // this validator is only valid when used in year field
  public static boolean threeArgsDate(
      Object bean,
      ValidatorAction va,
      Field field,
      ActionMessages errors,
      HttpServletRequest request,
      ServletContext application) {

    String valueString1 = ValidatorUtils.getValueAsString(bean, field.getProperty());

    String sProperty2 = ValidatorUtils.getValueAsString(bean, field.getVarValue("month"));
    String sProperty3 = ValidatorUtils.getValueAsString(bean, field.getVarValue("day"));

    if (((valueString1 == null) && (sProperty2 == null) && (sProperty3 == null))
        || ((valueString1.length() == 0)
            && (sProperty2.length() == 0)
            && (sProperty3.length() == 0))) {
      // errors.add(field.getKey(),Resources.getActionError(request, va,
      // field));
      return true;
    }

    Integer year = null;
    Integer month = null;
    Integer day = null;

    try {
      year = new Integer(valueString1);
      month = new Integer(sProperty2);
      day = new Integer(sProperty3);
    } catch (NumberFormatException e) {
      errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
      return false;
    }
    String date = new String(day.toString() + "/" + month.toString() + "/" + year);
    String datePattern = "dd/MM/yyyy";
    if (!GenericValidator.isDate(date, datePattern, false)) {
      errors.add(field.getKey(), Resources.getActionMessage(request, va, field));
      return false;
    }
    return true;
  }
예제 #5
0
  /**
   * Checks if the field matches the boolean expression specified in <code>test</code> parameter.
   *
   * @param bean The bean validation is being performed on.
   * @param va The <code>ValidatorAction</code> that is currently being performed.
   * @param field The <code>Field</code> object associated with the current field being validated.
   * @param errors The <code>ActionMessages</code> object to add errors to if any validation errors
   *     occur.
   * @param request Current request object.
   * @return <code>true</code> if meets stated requirements, <code>false</code> otherwise.
   */
  public static boolean validateValidWhen(
      Object bean,
      ValidatorAction va,
      Field field,
      ActionMessages errors,
      Validator validator,
      HttpServletRequest request) {
    Object form = validator.getParameterValue(Validator.BEAN_PARAM);
    String value = null;
    boolean valid = false;
    int index = -1;

    if (field.isIndexed()) {
      String key = field.getKey();

      final int leftBracket = key.indexOf("[");
      final int rightBracket = key.indexOf("]");

      if ((leftBracket > -1) && (rightBracket > -1)) {
        index = Integer.parseInt(key.substring(leftBracket + 1, rightBracket));
      }
    }

    if (isString(bean)) {
      value = (String) bean;
    } else {
      value = ValidatorUtils.getValueAsString(bean, field.getProperty());
    }

    String test = null;

    try {
      test = Resources.getVarValue("test", field, validator, request, true);
    } catch (IllegalArgumentException ex) {
      String logErrorMsg =
          sysmsgs.getMessage(
              "validation.failed",
              "validwhen",
              field.getProperty(),
              validator.getFormName(),
              ex.toString());

      log.error(logErrorMsg);

      String userErrorMsg = sysmsgs.getMessage("system.error");

      errors.add(field.getKey(), new ActionMessage(userErrorMsg, false));

      return false;
    }

    // Create the Lexer
    ValidWhenLexer lexer = null;

    try {
      lexer = new ValidWhenLexer(new StringReader(test));
    } catch (Exception ex) {
      String logErrorMsg = "ValidWhenLexer Error for field ' " + field.getKey() + "' - " + ex;

      log.error(logErrorMsg);

      String userErrorMsg = sysmsgs.getMessage("system.error");

      errors.add(field.getKey(), new ActionMessage(userErrorMsg, false));

      return false;
    }

    // Create the Parser
    ValidWhenParser parser = null;

    try {
      parser = new ValidWhenParser(lexer);
    } catch (Exception ex) {
      String logErrorMsg = "ValidWhenParser Error for field ' " + field.getKey() + "' - " + ex;

      log.error(logErrorMsg);

      String userErrorMsg = sysmsgs.getMessage("system.error");

      errors.add(field.getKey(), new ActionMessage(userErrorMsg, false));

      return false;
    }

    parser.setForm(form);
    parser.setIndex(index);
    parser.setValue(value);

    try {
      parser.expression();
      valid = parser.getResult();
    } catch (Exception ex) {
      String logErrorMsg = "ValidWhen Error for field ' " + field.getKey() + "' - " + ex;

      log.error(logErrorMsg);

      String userErrorMsg = sysmsgs.getMessage("system.error");

      errors.add(field.getKey(), new ActionMessage(userErrorMsg, false));

      return false;
    }

    if (!valid) {
      errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));

      return false;
    }

    return true;
  }