J'ai récemment rencontré un problème où je dois passer dans un groupe d'objets du projet. Dans le passé, je n'ai rencontré des cas où un objet, plusieurs objets ou un ensemble de tableaux ont été transmis. Il est rare de voir si un groupe d'objets est passé. Donc, il semble un peu délicat lorsque vous rencontrez ce problème. Je pensais qu'il serait possible de le résoudre de cette manière.
@RequestMapping ("Save1") public void Save1 (plan plan, list <Planitem> planitems, httpservletResponse réponse) {// too plus ... addMessage (réponse, message_type_success, null, message_success);};Mais plus tard, j'ai découvert que j'étais trop stupide et naïf. Cette méthode ne peut pas du tout lier les paramètres. Certaines personnes disent que le printemps doit sacrifier une partie de ses performances par rapport aux entretoises. Mais je n'ai pas de recherche sur le printemps et les jambes de force, je l'utilise simplement comme un outil. Donc, je ne sais vraiment pas pourquoi. Aller loin, revenant au sujet. Il existe d'autres solutions en ligne. C'est comment
classe publique Personlist {Liste privée <ponse> Personne; Liste publique <ponse> getPerson () {Retour Person; } public void SetPerson (list <ponv> personne) {this.person = personne; }} Dans Controller:
@RequestMapping (value = "xxx", méthode = requestMethod.post) Public Void Test (Personlist Person) {// Person de transpatation}} La page doit être écrite comme ceci:
<form id = "form" action = "test / test.do" metheth = "post"> <input type = "text" name = "personne [0] .UserName" value = "jobs" /> <input type = "text" name = "personne [0] .age" value = "55" /> <br/> <intry type = "text" name = "personne [1] .username]" value = "jim" /> <fort type = "Personne [1]. name = "personne [1] .age" value = "21" /> <br/> <input type = "soumi"> <form>
Mais j'ai essayé cette méthode, mais cela n'a toujours pas fonctionné. Je ne sais pas si je suis trop stupide ou pourquoi.
Après de nombreux rebondissements, une autre solution a été trouvée. Passez la chaîne JSON de l'objet List en arrière-plan. Une fois l'arrière-plan qui reçoit les paramètres. Convertissez ensuite JSON en objet. Le code frontal est exempté, le code d'arrière-plan est le suivant.
@RequestMapping ("Save") public void Save (plan Plan, String Planitemjson, HttpServletResponse Response) {list <Planitem> PARSEARRAY = JSON.PARSEARRAY (Planitemjson, Planitem.Class); // too ce que vous voulez addMessage (réponse, message_type_success, null, message_success);}Mais il y a un petit problème avec cela, c'est-à-dire que la chaîne JSON sera automatiquement ajoutée avec des devis doubles dans la section clé de la section précédente. Lors du décodage en arrière-plan, les citations doubles sont échappées comme ""; "Vous devez donc également convertir" ";" à double citations. C'est-à-dire que le code final est
@Requestmapping ("Save") public void Save (plan Plan, String Planitemjson, HttpServletResponse Response) {planitemjson = planitemjson.replaceAll ("", "/" "); list <panitem> parsearray = json.parsearray (Planitemjson, planitem.class); // todo Message_type_success, null, message_success);}Après les tests, cette méthode fonctionne également pour les objets de liste et la liste des objets.
PS: Afin d'améliorer la robustesse du programme, vous pouvez vérifier JSON après avoir échappé aux objets JSON, ce qui évite les erreurs en JSON se tournant vers les objets Java.
Ou utilisez une méthode plus violente pour effectuer des opérations d'essai lorsque JSON se transforme en liste.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.