Hello,

I'm using Seam 2.0GA.

I've a rich:dataTable that displays the values of a DataModel outjected from a 
"search" component. Each row defines a s:link with an action that triggers the 
call to a select method of an "info" component throuh a pageflow. The two 
components are in a the same conversation scope. 

It works fine if I use h:commandLink or h:commandButton but if i use s:link, it 
fails. The value passed to the select method is always the one that's attached 
to first row I've clicked.

Here are the code snippets.

SearchBookingAction:

  | @Stateful
  | @Scope(ScopeType.CONVERSATION)
  | @Name("search")
  | @Restrict("#{identity.loggedIn}")
  | public class SearchBookingAction implements SearchBooking {
  | 
  |     @In
  |     private EntityManager arsEntityManager;
  | 
  |     @DataModel
  |     private List<Booking> bookings;
  | 
  |     private String pnr;
  |     private String flightNumber;
  |     private Date flightDate;
  | 
  |     public void search()
  |     {
  |         Query query = arsEntityManager.createQuery(...);
  |         bookings = query.getResultList();
  |     }
  | 
  |     ....
  | }
  | 

BookingInfoAction:

  | @Stateful
  | @Scope(ScopeType.CONVERSATION)
  | @Name("info")
  | public class BookingInfoAction implements BookingInfo {
  | 
  |     @In
  |     private EntityManager arsEntityManager;
  |     
  |     private Booking booking;
  | 
  |     private List<Flight> departureFlights;
  |     private List<Flight> returnFlights;
  | 
  |     public void selectBooking(Booking booking) {
  |         this.booking = booking;
  |     }
  | 
  |     public boolean populate() {
  |         log.info("info.populate() called with: "+booking.getPnr());
  |         if (booking == null)
  |             return false;
  |         departureFlights = selectDepartureFlights();
  |         returnFlights = selectDepartureFlights();
  |         return true;
  |     }
  | 
  |     ...    
  | }
  | 

search.xhtml:

  | <rich:dataTable value="#{bookings}" var="currentBooking" >
  |     <rich:column>
  |         <f:facet name="header">#{messages['asr.list.pnr']}</f:facet>
  |         #{currentBooking.pnr}
  |     </rich:column>
  |     <rich:column>
  |         <f:facet name="header">#{messages['asr.list.name']}</f:facet>
  |         #{currentBooking.masterName}
  |     </rich:column>
  |     <rich:column>
  |         <f:facet name="header">#{messages['asr.list.flightnum']}</f:facet>
  |         #{currentBooking.masterFlightNumber}
  |     </rich:column>
  |     ...
  |     <rich:column>
  |         <f:facet name="header">#{messages['asr.list.viewheader']} 
:</f:facet>
  |         <s:link value="#{messages['asr.list.view']}" action="view" />
  |     </rich:column>
  | </rich:dataTable>
  | 

bo.jpdl.xml:

  | <start-page name="displaySearchBookingForm" view-id="/search.xhtml">
  |     <redirect/>
  |     ...
  |     <transition name="view" to="populateBookingInfo">
  |         <action expression="#{info.selectBooking(currentBooking)}" />
  |     </transition>
  | </start-page>
  | 
  | <decision name="populateBookingInfo" expression="#{info.populate()}">
  |     <transition name="true" to="displayBooking"/>
  |     <transition name="false" to="displayFindBookingForm"/>
  | </decision>
  | 
  | <page name="displayBooking" view-id="/booking.xhtml" back="enabled">
  |         <redirect/>
  |     ...
  | </page>
  | 
  | ...
  | 


Any ideas why it works with a h:commandButton or h:commandLink and not a s:link?

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4106404#4106404

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4106404
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to