Hi folks,

I've searched the forum, but I didn't find a topic solving my problem.

I modified the booking example to test the capabilities of Seam. I have to say, 
Seam is very nice.
As I said, I modified the booking example. I left the LoginAction as it was. 
After logging in, the user sees a personalized welcome message. The Name is 
retrieved from a database. It works fine. The User enters his token and is 
welcomed with his name.
A panelNavigation2 (nested in a f:view) displays some sort of navigation in the 
sidebar. As you see, I use myFaces. One of the navigation Items calls a method 
in a stateless bean, where I want the user component to be injected. But this 
doesn't work. Debugging this code reveals that as soon as the called method is 
invoked, user equals null. I don't know, what's wrong with my code.  It's 
similar to the booking example (i.e. ChangePasswordAction).

User.java:
package myprog.entities;
  | 
  | import java.io.Serializable;
  | 
  | import javax.persistence.Column;
  | import javax.persistence.Entity;
  | import javax.persistence.Id;
  | import javax.persistence.Table;
  | 
  | import org.hibernate.validator.Length;
  | import org.hibernate.validator.NotNull;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Scope;
  | import static org.jboss.seam.ScopeType.SESSION;
  | 
  | @Entity
  | @Table(name="USERS")
  | @Name("user")
  | @Scope(SESSION)    
  | public class User implements Serializable {
  |     private String m_ID;
  |     private String m_Name;
  |     private String m_Phone;
  |     private String m_Email;
  |     private int m_isDeveloper;
  |     private int m_isTester;
  |     private Integer m_isAdmin;      
  |     private String m_Password;
  |     private String m_TOTRoot;
  |     private String m_PWToken;
  |     private Integer m_isQPV;
  |     
  |     public User(String p_id, String p_name, String p_password, String 
p_email, String p_phone) {
  |             super();
  |             m_ID = p_id;
  |             m_Name = p_name;
  |             m_Password = p_password;
  |             m_Email = p_email;
  |             m_Phone = p_phone;
  |     }
  |     
  |     public User() {
  |     }       
  | 
  |     @Column(name="USR_ID")
  |     @Id
  |     @NotNull
  |     @Length(min=2, max=10)
  |     public String getID() {
  |             return m_ID;
  |     }
  |     
  |         //Here follow all the needed getters and setters
  | }

The LoginAction:
package myprog.sessions;
  | 
  | import java.util.List;
  | 
  | import javax.ejb.Interceptor;
  | import javax.ejb.Stateful;
  | import javax.ejb.Stateless;
  | import javax.faces.application.FacesMessage;
  | import javax.faces.context.FacesContext;
  | import javax.persistence.EntityManager;
  | import javax.persistence.PersistenceContext;
  | 
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Out;
  | import org.jboss.seam.contexts.Context;
  | import org.jboss.seam.ejb.SeamInterceptor;
  | 
  | import myprog.entities.User;
  | 
  | @Stateless
  | @Name("login")
  | @Interceptor(SeamInterceptor.class)
  | public class LoginAction implements ILogin {
  |     @In     @Out
  |     private User user;
  | 
  |     @PersistenceContext(unitName="myProgDatabase")
  |     private EntityManager em;
  | 
  |     @In
  |     private Context sessionContext;
  | 
  |     @In
  |     private FacesContext facesContext;
  | 
  |     public String login() {
  |             List<User> results = em.createQuery(
  |                             "from User where ID=:username")
  |                             .setParameter("username", 
user.getID()).getResultList();
  | 
  |             if (results.size() == 0) {
  |                     facesContext.addMessage(null, new FacesMessage("Invalid 
login"));
  |                     return "login";
  |             } else {
  |                     user = results.get(0);
  |                     sessionContext.set("loggedIn", true);
  |                     return "main";
  |             }
  | 
  |     }
  | }

Here is the component with the called method:
package myprog.sessions;
  | 
  | import java.util.List;
  | 
  | import javax.ejb.Interceptor;
  | import javax.ejb.Stateful;
  | import javax.ejb.Stateless;
  | import javax.persistence.EntityManager;
  | import javax.persistence.PersistenceContext;
  | 
  | import org.hibernate.validator.Valid;
  | import org.jboss.seam.ScopeType;
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Out;
  | import org.jboss.seam.annotations.Scope;
  | import org.jboss.seam.contexts.Context;
  | import org.jboss.seam.ejb.SeamInterceptor;
  | 
  | import myprog.entities.Testaction;
  | import myprog.entities.User;
  | 
  | @Stateless
  | @LoggedIn
  | @Name("showListForDevelopers")
  | @Interceptor(SeamInterceptor.class)
  | public class ShowListForDevelopers implements IShowListForDevelopers {
  |     @PersistenceContext(unitName = "myProgDatabase")
  |     private EntityManager em;
  |     
  |     @In @Valid
  |     private User user;
  |     
  |     public Testaction[] getTestactions() {
  |             List<Testaction> result = em.createQuery(
  |                             "from Testaction where DevUsrID=:dev order by 
ID asc"
  |                             ).setParameter("dev", 
user.getID()).getResultList();
  |             return result.toArray(new Testaction[result.size()]);
  |     }
  | }

As I said, in getTestactions() the user isn't injected. Has anybody any idea?
Might be it's important to know, that the method is called from a 
panelNavigation2 item. But I think, this shouldn't make any difference. 

Thank you
Newlukai

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

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


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to