2008-11-18 6 views
1

J'utilise un bean JSP et lorsque je fais une affectation à un nouvel objet, il est écrasé sur un objet submit à l'objet précédent.Utilisation d'un bean jsp dans une session

<jsp:useBean id="base" class="com.example.StandardBase" scope="session" /> 
... 
//base object id = 396 
base = new Base() 
//base object id = 1000 

et sur une nouvelle soumission de la page que je reçois

<jsp:useBean id="base" class="com.example.StandardBase" scope="session" /> 
//base object id = 396 

Est-il possible de dire JSP pour faire une nouvelle affectation?

Répondre

3

Je ne suis pas complètement sûr, mais je pense que base = new Base() ne met pas à jour la référence stockée dans la portée de session. Par conséquent, le bean que vous avez créé avec le <jsp:useBean/> initial est toujours là alors que celui que vous créez manuellement, puis mis à jour, ne l'est pas.

Débarrassez-vous de base = new Base() et ça devrait aller.

Si vous insistez pour le mettre à jour, utilisez HttpSession.setAttribute(). Comme si:

session.setAttribute("bean", bean); 

Je crois que la session variable est automatiquement créé et initialisé pour vous par le moteur JSP.

+0

c'est ce que j'ai pensé (après le fait). Y a-t-il un moyen d'écraser la référence? – Milhous

0

changerait la portée d'une session à une autre?

+0

non, car la plupart du temps je ne "réinitialise" pas l'objet. – Milhous

1

Vous n'êtes pas supposé renouveler le grain vous-même. Laissez JSP faire cela pour vous

Questions connexes