2

I have a java bean in a session and I did this:

QuestionnaireBeanWrapper wrapper = ( QuestionnaireBeanWrapper ) session.getAttribute( examPart );
wrapper.getQuestionnaireBeanList().get( examNumber - 1 ).setQuestionAnswer( examAnswer );

I change an attribute in the bean. My question is should I set it again in the session? or the object in the session is changed automatically?

user2785929
  • 877
  • 5
  • 13
  • 28
  • Yes, it will changed automatically as you cnaged is [by reference][1]. [1]: http://stackoverflow.com/questions/40480/is-java-pass-by-reference – vacuum Nov 26 '13 at 10:51

2 Answers2

0

Yes, it will changed automatically as you changed is by reference. See similar question.

Community
  • 1
  • 1
vacuum
  • 2,233
  • 3
  • 19
  • 31
0

When you retrieve the bean from session you have a reference to the bean. When a change is made on the bean through the reference the changes will be reflected in session since it points to the same object.

Try the following example:

QuestionnaireBeanWrapper wrapper = 
    ( QuestionnaireBeanWrapper ) session.getAttribute( examPart );
wrapper.getQuestionnaireBeanList().get( examNumber - 1 ).setQuestionAnswer( examAnswer );

QuestionnaireBeanWrapper wrapper2 = ( QuestionnaireBeanWrapper ) session.getAttribute( examPart );
System.out.println(( wrapper.getQuestionnaireBeanList().get( examNumber - 1 ).getQuestionAnswer() ==  wrapper2.getQuestionnaireBeanList().get( examNumber - 1 ).getQuestionAnswer())? "Same":"Different");
Kevin Bowersox
  • 88,138
  • 17
  • 142
  • 176