[jboss-user] [JBoss Seam] - question about programmatically accessing seam component

gsegura do-not-reply at jboss.com
Thu Nov 22 04:49:33 EST 2007


Hello, 
I'm in the need of programmatically accessing (I mean not using @In annotation) a component which is created with @Factory . But neither this:

  | Course course = (Course)Contexts.lookupInStatefulContexts("course") ;
  | 
nor this, is working:
Course course=(Course)Contexts.getSessionContext().get("course") ;
Both methods return null, as if the factory method is not been called. Is this correct behavior or could it be something in my code, I reproduce here the related parts.
By the way I'm not able to inject the component because its factory method is declared inside a component with @Restrict("#{identity.loggedIn}") declared, but I'm trying to use it when no login has happened yet. But just before I plan to use the login ocurrs, so at that time the @Restrict should not be a problem. If I try to use @In the injection tries to occur to early.

I think I better wrote the code:

firstly the component with the declared factory

  | @Name("courseManager")
  | @Scope(ScopeType.SESSION)
  | @Restrict("#{identity.loggedIn}")
  | public class CourseManagerAction implements CourseManager {
  | 
  |     @Factory
  |     public Course getCourse() {
  |         // gets default single course
  |         Course course = (Course) entityManager
  |                 .createQuery("select c from Course c").getSingleResult();
  |         return course;
  |     }
  | }
  | 

then the case where I want to use the "course" component:

  | @Scope(ScopeType.EVENT)
  | @Name("register")
  | public class RegisterAction implements Register {
  | 
  |       public void register() {
  |             //here the user register itself ....
  |             //after that do auto-login
  |             identity.authenticate() ;
  |             
  |              //now I want to access the course
  |              Course course = (Course)Contexts.getSessionContext().get("course") ;
  | 
  |              //but course is null 
  |              //why? shouldn't this call be similar to: @In Course course ??
  |       }
  | }
  | 

any comments?

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

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



More information about the jboss-user mailing list