[seam-issues] [JBoss JIRA] (JBSEAM-4966) Factory not called after @Outjecting null value with redirect

Vaclav Dedik (JIRA) jira-events at lists.jboss.org
Thu Aug 16 05:18:14 EDT 2012


    [ https://issues.jboss.org/browse/JBSEAM-4966?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12711934#comment-12711934 ] 

Vaclav Dedik edited comment on JBSEAM-4966 at 8/16/12 5:17 AM:
---------------------------------------------------------------

I fixed this bug in groovybooking by introducing @Observer annotation on the factory getBookings() and by raising the event in the confirm action. I think it's a much better solution and it's consistent with the booking example where it is done the same way.

{code}
  @End
  void confirm()
  {
     em.persist(booking)
     facesMessages.add "Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}", new Object[0]
     log.info("New booking: #{booking.id} for #{user.username}")
     events.raiseTransactionSuccessEvent("bookingConfirmed")
  }
{code}

{code}
  @Factory
  @Observer(["bookingConfirmed"])
  public void getBookings()
  {
     bookings = em.createQuery('''
        select b from Booking b
        where b.user.username = :username
        order by b.checkinDate''')
           .setParameter("username", user.username)
           .getResultList()
  }
{code}

See these two commits:
https://source.jboss.org/changelog/Seam?cs=15048
https://source.jboss.org/changelog/Seam?cs=15050
                
      was (Author: vdedik):
    I fixed this bug in groovybooking by introducing @Observer annotation on the factory getBookings() and by raising the event in the confirm action. I think it's a much better solution and it's consistent with the booking example where it is done the same way.

{code}
  @End
  void confirm()
  {
     em.persist(booking)
     facesMessages.add "Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}", new Object[0]
     log.info("New booking: #{booking.id} for #{user.username}")
     events.raiseTransactionSuccessEvent("bookingConfirmed")
  }
{code}

{code}
  @Factory
  @Observer(["bookingConfirmed"])
  public void getBookings()
  {
     bookings = em.createQuery('''
        select b from Booking b
        where b.user.username = :username
        order by b.checkinDate''')
           .setParameter("username", user.username)
           .getResultList()
  }
{code}
                  
> 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
>
>
> 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

        


More information about the seam-issues mailing list