2010-08-13 10 views
0

J'ai une JSP avec plusieurs formes comme la vue "d'édition" d'un objet. Maintenant, je veux envoyer l'un des formulaires, mais il y a une erreur dans la méthode validate, car l'un des champs de saisie n'a pas été rempli.Comment puis-je retourner à un JSP avec plusieurs formulaires avec ActionErrors?

Lorsque le bean est validé et que l'erreur est détectée, Struts retourne à la page JSP qui est définie comme INPUT pour le bean dans mon struts-config.xml. Mais maintenant les autres formes manquent leurs valeurs.

Comment puis-je résoudre ce problème et retourner à la JSP avec tous les formulaires remplis à nouveau?

Répondre

1

Lorsque Struts reçoit les paramètres de votre formulaire soumis, il les lie à l'objet ActionForm, puis appelle validate() sur l'objet ActionForm. Les paramètres liés restent là quand vous revenez à la page et vous devriez avoir vos valeurs présentes dans la page.

Il y a des choses qui peuvent interférer avec ce mécanisme:

  1. manque une méthode reset() pour traiter cases - de votre question, il semble peu probable que cela; Ayant un formulaire avec la portée "request" utilisée pour les appels de page chaînés - encore une fois, il est peu probable que cela soit le cas;
  2. La cause la plus probable - vous avez plusieurs formulaires dans la page mais vous ne soumettez que l'un d'eux afin que les champs dans les autres formulaires ne soient pas envoyés au serveur. En conséquence, Struts n'a rien à lier pour eux. Lorsque vous revenez à la page, vous avez vos valeurs manquantes. Ce n'est pas un problème de Struts. Vous pouvez résoudre ceci en ayant tous les champs dans un formulaire ou utiliser JS pour soumettre également les champs des autres formulaires. Voir un numéro similaire here.
+0

À droite, le 3. est mon problème. J'ai déjà commencé l'intégration de tous les formulaires dans un seul bean. Dois-je utiliser une sorte de propriété "action" pour déterminer quelle action je veux faire ou dois-je assigner le nouveau bean tout-savoir à mes différentes actions avec struts-config.xml? – cringe

+0

La solution que vous choisissez dépend de votre application. Choisissez la solution la plus facile et la plus facile à gérer maintenant que vous savez où est le problème. En ce qui concerne la propriété "action", je suppose que vous pourriez utiliser un org.apache.struts.actions.LookupDispatchAction ou un org.apache.struts.actions.DispatchAction pour le gérer, si cela ne vous apporte pas beaucoup de surcharge dans votre application. –