Help with Updating a Session Entity Object
clerum Dec 3, 2008 8:12 PMOK-
In my application when a user logins in I outject an user Session object named authuser. This is the object I use to pull the logged in users organization, name, etc..This seems to work fine.
I have new page which allows the user to edit their information.
<h:form id="updateUserForm">
<rich:panel>
<f:facet name="header">Edit Profile</f:facet>
<s:decorate id="usernameDecoration" template="/layout/edit.xhtml">
<ui:define name="label">Email Address</ui:define>
<h:inputText id="username" required="true" value="#{authuser.username}"/>
</s:decorate>
<s:decorate id="firstnameDecoration" template="/layout/edit.xhtml">
<ui:define name="label">First Name</ui:define>
<h:inputText id="firstname" required="true" value="#{authuser.firstname}"/>
</s:decorate>
<s:decorate id="lastnameDecoration" template="/layout/edit.xhtml">
<ui:define name="label">Last Name</ui:define>
<h:inputText id="lastname" required="true" value="#{authuser.lastname}"/>
</s:decorate>
<s:decorate id="organizationDecoration" template="/layout/edit.xhtml">
<ui:define name="label">Organization</ui:define>
<h:outputText id="organization" required="true" value="#{authuser.organization.name}"/>
</s:decorate>
<div style="clear:both"/>
</rich:panel>
<div class="actionButtons">
<h:commandButton id="update" value="Update" action="#{userutil.updateUser(authuser)}"/>
<h:commandButton id="cancel" value="Cancel" action="/home.xhtml"/>
</div>
</h:form> public void updateUser(User selectedUser)
{
user = em.merge(selectedUser);
em.persist(user);
}This all appears to work however if the user tries to edit their information again then get an error about that row already being edited by another user. I can see from the debug page that the version differs between the database and the Session object authuser.
How do I go about updating the authuser session bean?
Is there a correct way to handle situations like this which would have the bean updated automatically?