[
https://issues.jboss.org/browse/JBSEAM-4966?page=com.atlassian.jira.plugi...
]
Marek Schmidt commented on JBSEAM-4966:
---------------------------------------
The problem seems to be that Mojarra calls the equals method in SessionMap.put, which
causes every bean instance to become immediately dirty in
org.jboss.seam.contexts.SessionContext.flush, because of the
org.jboss.seam.intercept.JavaBeanInterceptor.
During this "equals" call the outjection occurs for the BookingListAction
instance, which causes the DataModel to replace our null-outjected value by the value in
the "List<Booking> bookings" field.
JavaBeanInterceptor should probably be changed to not become dirty on the equals method
call, as such method should probably be without side effects (and possibly could be also
changed not to run the interceptors on such methods either)
Factory not called after @Outjecting null value with redirect
-------------------------------------------------------------
Key: JBSEAM-4966
URL:
https://issues.jboss.org/browse/JBSEAM-4966
Project: Seam 2
Issue Type: Bug
Components: Core
Affects Versions: 2.3.0.BETA2
Environment: AS 7.1.2.Final
Reporter: Marek Schmidt
Fix For: 2.3.0.CR1
Attachments: JBSEAM-4966.jpa_reproducer.patch
The following scenario which works in Seam2.2, doesn't work in Seam2.3.0.Beta2
{code}
@Scope(ScopeType.SESSION)
@Name("bookingList")
class BookingListAction implements Serializable
{
@DataModel
private List<Booking> bookings
@Factory
public void getBookings() {
// load bookings from the database
}
}
{code}
{code}
@Name("hotelBooking")
public class HotelBookingAction
{
@Out (required=false, scope=ScopeType.SESSION)
List <Booking> bookings;
@End
public void confirm() {
// ... persist a new booking
// force refresh
bookings = null;
}
}
{code}
{code}
<page view-id="/confirm.xhtml"
conversation-required="true">
<description>Confirm booking: #{booking.description}</description>
<navigation from-action="#{hotelBooking.confirm}">
<redirect view-id="/main.xhtml"/>
</navigation>
</page>
{code}
The getBookings factory is not called at all after the confirm action. It works correctly
if I remove the redirect rule in pages.xml (by making the confirm action return
"main".).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira