[jboss-user] [JBoss Seam] - How does one @In(ject) a component from components.xml?

gothmog do-not-reply at jboss.com
Sat Jun 30 02:40:24 EDT 2007


Hi,

I'm new to this but wouldn't have thought that this should proove to be so difficult. 

I have a seam component that requires the services of a components.xml object that implements the interface called PaymentService.



Now when my seam app is deployed it recognizes the component as the following is output to the server console:

17:18:22,310 INFO  [Component] Component: paymentService, scope: APPLICATION, type: JAVA_BEAN, class: second_seam.MockPaymentService

Now I wanted to use the payment services in my business object, so I did the following

..
@In(value="paymentService")
private PaymentService paymentService;

Thinking that seam would find the object called paymentService and inject it into my business component. But it can't:

First of all when I request a page that uses this buisness object, other properties on the object start reporting errors, like I've also got an expiryMonth field on the business object and seam reports this error relating to it

17:18:23,845 ERROR [STDERR] Jun 30, 2007 5:18:23 PM com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[/addcardPOJO.xhtml]
javax.faces.el.EvaluationException: /cardfieldsPOJO.xhtml @51,106 value="#{cardFundingPOJO.expiryMonth}": Exception getting value of property expiryMonth of base of type : second_seam.CardFundingPOJO_$$_javassist_44

And finally about three pages of stack trace you get..
17:18:23,874 ERROR [DebugPageHandler] redirecting to debug page
org.jboss.seam.RequiredException: In attribute requires non-null value: cardFundingPOJO.paymentService
        at org.jboss.seam.Component.getValueToInject(Component.java:1919)
        at org.jboss.seam.Component.injectAttributes(Component.java:1368)
        at org.jboss.seam.Component.inject(Component.java:1195)
...

when I change the injection annotation to the following
@In(value="paymentService", required=false)
private PaymentService paymentService;

it works of course until I need to use the paymentService because its null in value. (i.e. I did this to proove that the one change was causing the errors on the monthExpiry field)

How does one simply inject a component from components.xml or is there another way to do this? (like I experimented with @Factory, but didn't have much luck with that either)

Seam 1.2.1
JBoss 4.0.5

Thanks

Troy




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

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



More information about the jboss-user mailing list