[jboss-user] [JBoss Seam] - can factory methods have parameters?

matt.galvin do-not-reply at jboss.com
Sun Sep 23 02:49:01 EDT 2007


I've scoured the forum and docs trying to figure this out and have been unsuccessfull, so hopefully someone can steer me in the right direction.

I have a page that displays a set of dataTable elements.  The scenario is that I have a bunch of objects that can be categorized.  The list of categories is dynamic.  On the page, I am iterating over each category (using ui:repeat) and displaying a dataTable for each category.  The dataTable snippet currently looks like:


  | <ui:repeat value="#{allCategories}" var="category">
  | 	<rich:dataTable width="100%" var="record" value="#{calculationManager.findCalculations(category.id)}">
  | 		<rich:column>
  | 			<h:outputText value="#{record.calculation)}"/>
  | 		</rich:column>
  | 	</rich:dataTable>
  | </ui:repeat>
  | 

The allCategories property is backed by a DataModel, this is fine.  The dataTables are being populated by a bean (referenced by calculationManager) that contains the following:


  | public List<FinancialCalculation> findCalculations(int categoryId) {
  | 	return (List <FinancialCalculation>)em.createQuery("select f from FinancialCalculation f where category_id=:c")
  | 		.setParameter("c", categoryId)
  | 		.getResultList();
  | }
  | 

This is displaying as I want.  However, my next step is that each item in each table needs to be clickable (it will take the user to a details page).

There are two options that I've thought of.  First, I can use a commandLink and pass an id of the selected item through it, then look up the object in the method that is called.  I haven't done it, but can't think of why it wouldn't work.  It just doesn't feel "correct".

The second was to switch to using a DataModel to back each table and use the DataModelSelection functionality.  This is what I think I should be doing.  The problem is, I don't know how to create the DataModel using a factory method that needs to take a parameter (ie, make the findCalculations method above be a factory).  Alternatively, I could remove the method parameters and add an injected property:
@In private Integer categoryId
But then I don't know how to have the proper value injected for each of the dataTables.

Did I explain that clearly?  If so, any suggestions?

Thanks!
Matt

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

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



More information about the jboss-user mailing list