Fernando's right. Your field curruser starts out as an ASO but if you reassign it (eg. curruser = u) then it becomes something else which is not an ASO.

Your code looks like it's a mod of JumpStart, but JumpStart actually does the same kind of thing Fernando's saying:

        @ApplicationState
        private Visit _visit;
        private boolean _visitExists;

<snipped>

User user = getSecurityFinderService().authenticateUser(_loginId, _password);

        // Store the user in the Visit
                        
        _visit.noteLogIn(user);

and Visit then sets its fields based on the user. That way it remains an ASO.

        public void noteLogIn(User user) {
                _loggedIn = true;
                _myUserId = user.getId();
                _myLoginId = user.getLoginId();
        }

HTH,

Geoff


On 03/09/2008, at 7:24 PM, Fernando Padilla wrote:

Also, i thought you were to think of an ASO almost as a singleton or a service. Tapestry will create it for you on first access. I didn't know you could set it. Even if I'm wrong, using this design pattern might clean things up a little.


So you should use another class to contain a reference to the current active user, call it "UserContainer".


@AplicationState
private UserContainer currUser;


and it would have methods like:

currUser.hasUser()
currUser.setUser(User user)
currUser.getUser()


or whatever you like.



José Paumard wrote:
Natia,
I think there is a mistake in your code :
private User currUser ;
private boolean userExists ;
I dont think T5 will link userExists and currUser, currUser should be named user, or userExists currUserExists (please correct me if I'm wrong). That said, what do you mean "I cant access currUser", do you mean that the ASO is null in other classes that want to read it ? Or do you mean that userExists is always false (which is normal, see above).
José
Natia Gdzelishvili a écrit :
I'm using tapestry 5.0.14 ,i vahe problem with aso, my code is:

public class Login {
   private String username;
   private String password;
   @Inject
   private IBusinessServicesLocator _businessServicesLocator;
   @ApplicationState
   private User currUser;
   private boolean userExists;


   public String getUsername() {
       return username;
   }

   public void setUsername(String username) {
       this.username = username;
   }

   public String getPassword() {
       return password;
   }

   public void setPassword(String password) {
       this.password = password;
   }

   @SuppressWarnings("unchecked")
   @OnEvent(value = "submit", component = "loginForm")
   public Object submitLoginForm() {
       Class nextPage;
       try {
User u=getMerchantCreator().login(username, password); //*returns
some object*
           currUser = u; /*/ currUser object cannot be resolved*
           nextPage = ViewAllMerchants.class;

       } catch (UserNotFoundException e) {
           nextPage = Login.class;
           e.printStackTrace();
       }
       return nextPage;
   }

   private IMerchantCreatorLocal getMerchantCreator() {
       return _businessServicesLocator.getMerchantCreatorLocal();
   }
}

i cannot access curruser...
please help..


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to