1

当具有值的初始化变量来自会话时,我收到错误..我的程序是这样的:

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中的值时,该值为null..

如果我采用这样的会话值:

    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");
        }
    }

值是显示,不再为空..但如果我初始化变量,值为空..任何人都可以帮助我吗?

谢谢你的关注,对不起我的英语不好..

4

1 回答 1

0

我对我的问题感到厌烦,我想分享一下,也许有人和我有同样的问题,只需更改获取会话对象的方式,如下所示:

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

该值不再为空..这是获取会话对象的正确方法..感谢您的关注..

于 2011-06-10T03:10:46.243 回答