tags:

views:

974

answers:

3

I am using a JSP bean and when I do an assignment to a new object, it gets over-written on a submit to the previous object.

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

and on a resubmit of the page I get

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

Is there a way to tell JSP to do a new assignment?

A: 

would changing scope from session to request fix this for you?

Tim Howland
no, as most of the time I am not "resetting" the object.
Milhous
+1  A: 

You're not supposed to new the bean yourself. Let JSP do that for you

krosenvold
+2  A: 

I'm not completely sure, but I think base = new Base() does not update the reference stored in the session scope. Therefore, the bean you created with the initial <jsp:useBean/> is still around while the one you create manually, and then updated, isn't.

Get rid of base = new Base() and you should be fine.

If you insist upon updating it, you use HttpSession.setAttribute(). Like so:

session.setAttribute("bean", bean);

I believe the variable session is automatically created and initialized for you by the JSP engine.

sblundy
this is what i figured(after the fact). Is there a way to overwrite the reference?
Milhous