Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top