[
https://issues.jboss.org/browse/JBSEAM-4966?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12713068#comment-12713068
]
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
_______________________________________________
seam-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/seam-issues