[jboss-user] [JBoss Seam] - Multiple component instances or how to use a component multi

patrickr do-not-reply at jboss.com
Fri Jul 27 10:30:47 EDT 2007


Hi all,

I really love bijection; it makes things so much easier. However, I have a requirement that makes it somehow hard to use contextual components.

Let's suppose we have a Checkout page, were you can enter shipping and a payment addresses. These addresses obviously belong to a model of the same type. Let us further assume, that entering an address triggers some logic (beyond validation) so we need a controller, say:

@Name("checkoutAddressController")
  | public class CheckoutAddressController {
  | 
  | 	// maybe a persistence manager
  | 	@In SomeService service
  | 	
  | 	// our model
  | 	private Address address;
  | 	
  | 	// [...]
  | 	// some logic, getter / setter etc
  | 	
  | }

Now on my checkout page, I want my address forms to have the above controller as a backing bean. So I need two instances of the same component on the same page. From the manual I read that maybe @Role could help here. But if the designer chooses to add another address form, I would have to add another Role. What if the designer wants to add 100 addresses? (yes, he's a maniac)

Can composition help? I thought something like this?

@Name("checkoutPage")
  | public class CheckoutPage
  | {
  | 	@In(scope=ScopeType.STATELESS, create=true)
  | 	CheckoutAddressController c1;
  | 	
  | 	@In(scope=ScopeType.STATELESS, create=true)
  | 	CheckoutAddressController c2;
  | 	
  | 	// or even
  | 	List<CheckoutController> ctls;
  | 	
  | 	@Create public void create() {
  | 		ctls = new ArrayList...
  | 		ctls.add(Component.getInstance("checkoutAddressController", ScopeType.STATELESS, true))
  | 	}
  | }

Will this work? 
Are there other solutions? 
Am I making things to complicated?

Regards
Patrick

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

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



More information about the jboss-user mailing list