2010-10-29 4 views
2

Hello Я не могу получить правильную проверку. Я думаю, что в этом коде есть некоторая ошибка, поэтому кто-нибудь может помочь мне решить эту проблему.Функция проверки достоверности

public static boolean validateFee(String value) { 

     boolean isvalid = true; 
     try { 
      int fee = 0; 
      if (value != null && !value.isEmpty()) { 
       fee = Integer.parseInt(value); 
      } 
     } catch (NumberFormatException ne) { 
      // ne.printStackTrace(); 
      isvalid = false; 
      return isvalid; 

     } 
     return isvalid; 
    } 
} 

Я Actaully используя этот код для подтверждения оплаты услуг, в которых я использую регулярное выражение в [0-9] +. Этот код им использовать его в общий вызов проверки function.Actually делается в сервлет следующим образом:

private Boolean validateFee(HttpSession session, PropertiesHandler props, String number) { 
    Boolean isvalid = true; 
    HashMap hashMap = new LinkedHashMap(); 
    number = ApplicationConstants.FEE_PATTERN; 
    if (!Validation.validateFee(number)) { 
     isvalid = false; 
     hashMap.put("time", props.getText("error.fee.invalid.type")); 
    } 
    session.setAttribute("errorMessage", hashMap); 
    System.out.println("Map size " + hashMap.size()); 
    logger.info("Exit validateTIme"); return isvalid; 
} 

Я думаю, что нет никакой ошибки в том, что, но у меня есть сомнения в этом function.I я, сталкивающихся с проблема, как если я дам номер комиссии и его принятие validation.please помочь мне

+0

Есть ли у вас какие-либо материалы, для которых это не удастся? – MAK

ответ

5

В настоящее время он позволяет значение null или «» считать действительным - это преднамеренно?

Обратите внимание, что ваш текущий код может быть переписан более просто:

public static boolean validateFee(String value) { 
    try { 
     if (value != null && !value.isEmpty()) { 
      Integer.parseInt(value); 
     } 
     return true; 
    } catch (NumberFormatException ne) { 
     return false; 
    } 
} 

Теперь, если вы хотите пустой/пустой считать недействительным, я бы переписать его как:

public static boolean validateFee(String value) { 
    if (value == null || value.isEmpty()) { 
     return false; 
    } 
    try { 
     Integer.parseInt(value); 
     return true; 
    } catch (NumberFormatException ne) { 
     return false; 
    } 
} 
+0

Я использовал этот код, но все же я не смог получить ответ. Нижеприведенный код - это моя проверка для функции оплаты. – yopirates

+0

Я получаю плату неиспользованную, когда я использую свою программу – yopirates

+1

@yopirates: * Что * ответ? Вы все еще не сказали, что на самом деле неправильно. Если бы вы могли привести пример, где он дал неправильный ответ, это облегчило бы вам помощь. –

0

Я рекомендую вы используете Обще-языки StringUtils класс, ваш метод проверки повторно написанный

public static boolean validateFee(String value) { 
    return StringUtils.isNumeric(StringUtils.trimToNull(value)); 
} 

И вы полностью удаляете ApplicationConstants.FEE_PATTERN. Проблема, с которой вы сейчас сталкиваетесь, заключается в том, что ваш сервлет перезаписывает свое входное значение ApplicationConstants.FEE_PATTERN. Ваш метод сервлета переписан

private Boolean validateFee(HttpSession session, PropertiesHandler props, String number) { 
    final Boolean valid = Validation.validateFee(number); 
    if (!valid) { 
     final HashMap hashMap = new LinkedHashMap(); 
     hashMap.put("time", props.getText("error.fee.invalid.type")); 
     session.setAttribute("errorMessage", hashMap); 
    } 
} 
+0

Я импортировал StringUtils, но я получаю ошибку при trimToNull – yopirates

+0

Какая ошибка? Вы используете commons-lang 2.5? –

+0

Можете ли вы изменить свой код, если это возможно. – yopirates

1

обрезать свою строку, а затем передать ее.

StringUtils.isNumeric(StringUtils.trimToNull(fees)); 

Вы можете непосредственно использовать StringUtils.isNumeric()

+0

Это даже соответствует пустой строке. – aioobe

+0

@aioobe спасибо, обновил ответ –

+0

'StringUtils.trimToNull (комиссии)' было бы лучше –

Смежные вопросы