Переменная Init со значением из сеанса в ZK? Почему всегда получают нулевое значение? - PullRequest
1 голос
/ 09 июня 2011

Я получаю ошибку, когда initilize переменная со значением происходит из сессии .. моя программа выглядит так:

public class OTPController extends GenericForwardComposer implements Initiator{
    private String valueOTP;
    private Rusers user;
    public void doInit(Page arg0, Map arg1) throws Exception {
            user=(Rusers) arg1.get("user");
            System.out.println("user Id="+user);
    }

когда я распечатываю значение в init, значение равно нулю ..

если я возьму значение сеанса следующим образом:

    public void doInit(Page arg0, Map arg1) throws Exception {
            user=(Rusers) session.getAttribute("user");
            System.out.println("user Id="+user);
    }

значение также равно нулю ..

я могу установить сеанс следующим образом:

session.setAttribute("user", user);

любой может помочьМеня очень смущает, потому что, если я нажму на действие после этой нулевой инициализации и выведу результат, например:

public void onClick$evaluate(Event event){
        String key=(String) session.getAttribute("key");
        if(valueOTP.equals(key)){ 
            System.out.println("user Id="+user);
            session.invalidate();
            session.setAttribute("user", user);
            execution.sendRedirect("./Welcome.zul");
        }else{
            System.out.println("OTP Failed");
            execution.sendRedirect("./Login.zul");
        }
    }

значение будет отображаться, больше не будет нулевым, но если я инициализирую переменную,значение равно нулю. Кто-нибудь может мне помочь?

спасибо за ваше внимание, и извините за мой плохой английский ..

1 Ответ

0 голосов
/ 10 июня 2011

я получил ответ на мой вопрос, и я хочу поделиться, может быть, у кого-то возникла такая же проблема со мной, просто измените способ получения объекта сеанса, например:

public void doInit(Page arg0, Map arg1) throws Exception {
            session=Executions.getCurrent().getSession();
            user=(user) session.getAttribute("user");
            System.out.println("user Id="+user);
    }

значение больше не равно нулю ... это правильный способ получить объект сеанса .. спасибо за внимание ..

...