Example #1
0
  public void postField(
      SessionContext ctx,
      FormInstance instance,
      String fieldname,
      ErrorMessages msgs,
      EventManager manager) {

    String id = (String) ctx.getRequestAttribute("ID");
    if (id == null || id.trim().length() <= 0) {
      instance.setHTMLShowMessage("错误", "必须输入身份证号码!");
      return;
    }

    id = id.trim();
    if (id.length() != 15 && id.length() != 18) {
      instance.setHTMLShowMessage("错误", "身份证号码长度必须为15或18位!");
      instance.setHTMLFieldValue("ID", "");
      return;
    }

    if (id.length() == 15) {
      if (util.isDate("19" + id.substring(6, 12)) == false) {
        instance.setHTMLShowMessage("警告", "证件号码日期格式非法!");
        return;
      }
    } else {
      if (id.charAt(17) == 'x') {
        instance.setHTMLShowMessage("错误", "证件号码的校验位不能是小写x!");
        instance.setHTMLFieldValue("ID", "");
        return;
      }

      if (util.isDate(id.substring(6, 14)) == false) {
        instance.setHTMLShowMessage("警告", "证件号码日期格式非法!");
        return;
      }

      int iS = 0, iY;
      int iW[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
      String szVerCode = "10X98765432";

      int i;
      for (i = 0; i < 17; i++) {
        iS += (int) (id.charAt(i) - '0') * iW[i];
      }
      iY = iS % 11;
      if (szVerCode.charAt(iY) != id.charAt(i)) {
        instance.setHTMLShowMessage("警告", "身份证号码校验码错误!");
        return;
      }
    }

    //    String year = null;
    //    if(id.length() == 15)
    //      year = "19" + id.substring(6,8);
    //    else
    //      year = id.substring(6,10);
    //    int iYear;
    //
    //    try
    //    {
    //      iYear = Integer.parseInt(year);
    //    }
    //    catch(Exception e)
    //    {
    //      instance.setHTMLShowMessage("警告","身份证号码生日格式错误!");
    //      return;
    //    }
    //
    //    if(iYear <= 1900)
    //    {
    //      instance.setHTMLShowMessage("警告","身份证号码生日早于1900年!");
    //      return;
    //    }

    return;
  }