2011-09-30 3 views
0

J'essaie de passer une liste entre deux pages JSP que j'ai. C'est une liste d'objets appartenant à une classe que j'ai écrite.Passer liste/tableau entre les pages JSP

Comment transmettre cette liste entre les pages JSP? request.setAttribute semble fonctionner pour les chaînes, mais rien d'autre. Et, si cela ne peut pas être facilement fait avec une liste, je peux convertir la liste en un tableau et le transmettre de cette façon, pas de problème.

+0

Convertir en une chaîne JSON, puis utilisez 'request.setAttribute'. –

+3

* "request.setAttribute semble fonctionner pour les chaînes, mais rien d'autre" * Ce n'est pas vrai. Cette hypothèse est basée sur une mauvaise interprétation. – BalusC

Répondre

5

La première chose est qu'un très mauvais design conduira à des questions telles que la transmission de listes entre différentes pages JSP. Le "pincement du mal au bourgeon" sera de créer une classe java séparée qui contient la liste et l'initialise, puis vous pouvez accéder à la liste à autant de pages jsp que vous le souhaitez.

Mais si vous voulez vraiment faire, vous pouvez mettre la liste dans la session.

request.getSession().setAttribute("list",myListObject); 

ensuite sur l'autre page, vous pouvez obtenir

List<MyType>myListObject=(List<MyType>) request.getSession().getAttribute("list"); 

Et vous devez effacer la liste de la session après que vous ne désirez pas,

request.getSession().removeAttribute("list"); 
+0

Cela me donne une erreur de construction sur la deuxième page. request.getSession(). GetAttribute ("list") donne cette erreur: Incompatibilité de type: impossible de convertir l'objet en liste user906153

+1

J'ai modifié ma réponse –

2

La réponse la plus simple est la suivante: ça dépend.

Si vous avez par ex. one.jsp et que vous appelez rediriger vers second.jsp - vous pouvez utiliser la portée de la demande

<c:set var="list" value="${yourListObject}" scope="request" /> 

Si vous avez one.jsp et quelques pages plus loin que vous voulez afficher votre liste, vous devez utiliser la portée de la session:

<c:set var="list" value="${yourListObject}" scope="session" /> 

pour afficher votre liste second.jsp:

${list} 

yourListObject vous pouvez remplacer par

  • <% = expression Java%>
  • haricot usage qui a cette liste et juste passer la référence ici
+0

nice ........... –

Questions connexes