L'utilisation de @RequestParam déclenche une erreur dans le Printemps 3
Je suis en utilisant le @RequestParam annotation pour obtenir les paramètres de la requête , et en utilisant les mêmes pour insérer les valeurs dans la DB.
J'ai configurer le contrôleur de re-diriger vers la même page qui contient les champs de texte pour l'utilisateur d'entrer les valeurs, qui sont lus à l'aide de @RequestParam annotation.
Mais après je entrer les valeurs dans les champs de texte , et cliquez sur soumettre , il met cette erreur
Traitement de la requête a échoué; nested exception java.lang.IllegalArgumentException: Nom de l'argument de type [java.lang.String] n'est pas disponible, et le nom du paramètre de l'information introuvable dans le fichier de classe soit.
Je suis un newbie de Printemps 3 , et incapable de comprendre l'erreur. Quelqu'un peut s'il vous plaît faire la lumière sur la même.
Merci d'avance,
Vivek
- La version de Spring MVC? Pouvez-vous montrer signature de la méthode avec des annotations?
- Je suis à l'aide de Spring MVC version 3 , et la signature de la méthode est
public void insertRecords(@RequestParam String id , @RequestParam String name , @RequestParam String addr)
Vous devez vous connecter pour publier un commentaire.
Afin d'injecter de la valeur de paramètre de la requête dans votre gestionnaire de paramètre de méthode, soit l'une des opérations suivantes doivent être satisfaites
Le nom du paramètre de la requête doit correspondre avec le nom du paramètre de méthode.
par exemple
La suite va injecter la demande paramètre nommé "studentName" dans le paramètre de méthode studentName
public String goToStep(@RequestParam String studentName)
La demande de nom de paramètre doit être spécifié explicitement si elle ne correspond pas au paramètre de méthode. Le suivant va injecter "nameOfStudent" paramètre de la requête en studentName:
public String goToStep(@RequestParam("nameOfStudent") String studentName)
Merci de poster votre gestionnaire de code de la méthode si votre problème persiste toujours.
public void insertRecords(@RequestParam String id , @RequestParam String name , @RequestParam String addr)
et de la jsp a les attributs id pour chacun des champs de texte que par la convention de nommage du paramètre de méthode.code
public void insertRecords(@RequestParam String id , @RequestParam String nom , @RequestParam Chaîne addr, HttpServletRequest request) { System.out.println ("demande.getParameter( "nom" ) ); // Ne pas utiliser en production }code
Si cette affiche "null" alors la JSP n'est pas d'envoyer le paramètre et l'affichage de votre code JSP sera utile. Si il imprime la valeur vous attendent, alors nous savons que le problème est avec le contrôleur.J'ai demandé pour la version que vous utilisez, car j'ai couru avec un problème similaire il y a quelques jours. J'ai été en utilisant le Printemps 3.1.0.M2 et la même exception est apparu quand j'ai été en utilisant @PathVariable dans mandaté @Contrôleur.
Il a été causé par un résolution de bug. Vous avez juste à passer à 3.0.6 ou d'essayer de la nightly build 3.1.0.CONSTRUIRE-INSTANTANÉ. Bien sûr, cette dernière option n'est pas recommandée pour un environnement de production.