You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Musachy Barroso (JIRA)" <ji...@apache.org> on 2009/07/28 02:25:59 UTC
[jira] Resolved: (WW-3098) NeedsRefresh not working for
ModelDrivenInterceptor and Hibernate
[ https://issues.apache.org/struts/browse/WW-3098?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Musachy Barroso resolved WW-3098.
---------------------------------
Resolution: Fixed
> NeedsRefresh not working for ModelDrivenInterceptor and Hibernate
> -----------------------------------------------------------------
>
> Key: WW-3098
> URL: https://issues.apache.org/struts/browse/WW-3098
> Project: Struts 2
> Issue Type: Bug
> Components: Core Interceptors
> Affects Versions: 2.1.6
> Environment: Hibernate
> JPA
> Windows XP
> Tomcat 6 running under Eclipse 3.4
> Java 1.6 with Java 1.5 source compliance
> Reporter: Peter Kelley
> Fix For: 2.1.8
>
>
> I have the following configured in struts.xml:
> <interceptor-ref name="modelDriven">
> <!-- allow actions to change the model during execution so that the view gets a new model. -->
> <param name="refreshModelBeforeResult">true</param>
> </interceptor-ref>
> and in my action:
> /**
> * Create or update the entity.
> *
> * @return <code>Show</code>
> */
> public String save() {
> LOG.debug("save() Called");
> setEntity(getDao().save(entity));
> return SHOW;
> }
> Where the entity has not previously saved by Hibernate and Hibernate is returning the entity with the id field set.
> When struts gets to the following code in ModelDrivenInterceptor (lines 112-117):
> // Check to see if the new model instance is already on the stack
> for (Object item : root) {
> if (item == newModel) {
> needsRefresh = false;
> }
> }
> the test equates to true even though I can see in the debugger that the two objects have different object identities.
> Changing line 114 to:
> if (item.equals(newModel)) {
> fixes the problem.
> I can only think that the cglib enhanced object returned by Hibernate does something weird with == but responds to .equals() correctly.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.