Lorsqu'une chaîne non valide est saisie à la place d'un nombre, elle doit passer par l'intercepteur d'exception. Pendant le Param Interceptor, la conversion en un type int à l'aide de Integer.parseInt devrait échouer, déclenchant une NumberFormatException. Cette exception ne devrait-elle pas être insérée dans la Value Stack ? Pourquoi le résultat est-il affiché malgré les erreurs ?
La saisie des alphabets dans le formulaire entraîne l'affichage de zéro. Pourquoi ?
Struts2 traite les erreurs de conversion et de validation comme des erreurs de saisie plutôt que comme des erreurs de blocage. Au lieu de déclencher des exceptions, il renvoie un résultat INPUT et informe l'utilisateur d'une saisie incorrecte.
Dans la réponse d'origine, les erreurs de conversion ont abouti à zéro en raison de la récupération de la valeur int par défaut au lieu de l'entrée String. . Cependant, Conversion Interceptor aurait dû enregistrer la chaîne d'origine pour l'afficher dans les requêtes suivantes.
Mais pourquoi la chaîne est-elle affichée sous la forme zéro au lieu de abc ?
Le problème est dû à l'attribut value dans le composant d’entrée. L'utilisation de getText() ou getText() dans l'attribut value entraîne des problèmes de conversion. La suppression de l'attribut value ou l'utilisation de %{myIntField} résout le problème.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!