2010-10-29 8 views
2

Bonjour Je ne suis pas en mesure d'obtenir la validation correcte.Je pense qu'il ya une erreur dans ce code, donc quelqu'un peut-il m'aider s'il vous plaît à résoudre ce problème.problème de validation fonction

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; 
    } 
} 

J'utilise actaully ce code pour la validation des droits dans lequel je suis en utilisant une expression régulière comme [0-9] +. Ce code im utiliser dans un appel de validation function.Actually commun est fait dans le servlet comme suit:

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; 
} 

Je pense qu'il n'y a pas d'erreur dans cela, mais j'ai un doute dans cette function.I suis face à une problème comme si je donne le numéro à la taxe également sa prise de validation.please help me out

+0

Avez-vous des entrées pour lesquelles ce ne parvient? – MAK

Répondre

5

Actuellement, il permet la valeur de null ou "" de compter comme étant valide - est-ce délibéré?

Notez que votre code actuel peut être plus simplement réécrite:

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

Maintenant, si vous voulez null/vide pour être considéré comme invalide, je réécris comme:

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

J'ai utilisé ce code mais je ne suis toujours pas en mesure d'obtenir la réponse. Le code ci-dessous est ma validation pour la fonction de frais. – yopirates

+0

Je ne suis pas redevable quand j'utilise mon programme – yopirates

+1

@yopirates: * Quoi * réponse? Vous n'avez toujours pas dit ce qui ne va pas. Si vous pouviez donner un exemple où vous donnez la mauvaise réponse, cela vous faciliterait grandement la tâche. –

0

Je recommande vous utilisez commons-lang StringUtils classe, votre méthode validate réécrites

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

Et vous supprimez complètement ApplicationConstants.FEE_PATTERN. Le problème auquel vous êtes actuellement confronté est que votre servlet écrase sa valeur d'entrée avec ApplicationConstants.FEE_PATTERN. Votre méthode de servlet est réécrite

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

J'ai importé StringUtils mais je reçois erreur à trimToNull – yopirates

+0

Quelle est l'erreur? Utilisez-vous commons-lang 2.5? –

+0

Pouvez-vous juste modifier mon code si possible. S'il vous plaît. – yopirates

1

Coupez votre chaîne, puis transmettez-la à.

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

Vous pouvez utiliser directement StringUtils.isNumeric()

+0

Cela correspond même à la chaîne vide. – aioobe

+0

@aioobe merci, mis à jour la réponse –

+0

'StringUtils.trimToNull (frais)' serait mieux –