[jboss-user] [JBoss Seam] - How to correctly use @DataModel's rowAvailable?

avbentem do-not-reply at jboss.com
Fri Mar 16 11:49:51 EDT 2007


Hi all,

The DVD Store example shows using @DataModel, @Factory and JSF's isRowAvailable():
@DataModel
  | List<Order> orders;    
  | 
  | @DataModelSelection
  | @Out(value="myorder", required=false, scope=ScopeType.CONVERSATION)
  | Order order;
  | 
  | @Begin @Factory("orders")
  | public String findOrders() {
  |   :
  | }

<f:subview rendered="#{!orders.rowAvailable}">
  |     <p>You have not placed any orders.</p>
  | </f:subview>

The above works fine as long as the URL is not reloaded (Ctrl-R in the browser). 

However, when the URL includes a conversation ID (like &cid=123) then upon reloading the page, rowAvailable might yield false (as rowIndex == -1) while rowCount > 0. Is this the expected behavior?

For example: 

In the online demo (which might be out of date, but I get the same behavior in my own code) clicking "My orders" works fine. Then, clicking Show Details for some order will make the URL include a &cid parameter (in fact named conversationId in that example, like showorders.seam?conversationId=123). Next, Ctrl-R or "Go" for that URL results in "You have not placed any orders". At this point the debug page shows, for example:
Component (orders)
  |     class              class org.jboss.seam.jsf.ListDataModel
  |     dataModelListeners []
  |     rowAvailable       false
  |     rowCount           22
  |     rowData            java.lang.IllegalArgumentException[row is unavailable]
  |     rowIndex           -1
Next, clicking on "My orders" again (which has propagation="none") will correctly show the list again. This, however, triggers the @Factory method, and thus fetches fresh results from the database.

In my own code I'm now using rowCount, just like in all the other examples that use @Datamodel. But I'm still wondering if this is the expected behavior? Does one need some additional setup (such as scope in the @DataModel) when relying on isRowAvailable()?

Thanks,
Arjan.

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

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4028839



More information about the jboss-user mailing list