facesContext.getExternalContext().getRequest().getSession()的返回对象是什么类?

lee*_*len 1 java lotus-domino xpages xpages-ssjs

当试图在XPage上获取SSJS中的Session时(如此处所解释的),前面的类型只会到达getSession().

我可以看到getSession()调用返回一个标准java.lang.Object,这解释了为什么超前类型getSession()只显示类的props /方法java.lang.Object.

但是,如果您继续并调用该getId()方法,如上面的链接中所述,那么您可以保存XPage,它将运行没有问题.

这很好,但是如果我想在Java中进行相同的调用,代码将无法编译,因为如上面针对SSJS所述,返回的对象是标准的java.lang.Object,并且没有调用的方法getId().

因此,我可以转换返回的对象以允许我访问会话方法吗?如果是这样,我应该把它投到哪个班级?

Nav*_*een 7

代码facesContext.getExternalContext().getRequest().getSession()返回类com.ibm.designer.runtime.domino.adapter.servlet.LCDAdapterHttpSession.

如果您需要知道对象所属的类,只需添加.getClass().getName()它即可.所以你的案例中的代码是 - facesContext.getExternalContext().getRequest().getSession().getClass().getName()

在Java中你必须写

import javax.faces.context.FacesContext;
// import com.ibm.designer.runtime.domino.adapter.servlet.LCDAdapterHttpSession;
import javax.servlet.http.HttpSession;
...
...
// LCDAdapterHttpSession s = (LCDAdapterHttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true);
HttpSession s = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true);
return s.getId();
Run Code Online (Sandbox Code Playgroud)

该类LCDAdapterHttpSession实现javax.servlet.http.HttpSession.

  • 我认为重要的是要强调,对于你来说,开发人员实际实现的内容并不重要(`LCDAdapterHttpSession`),你应该转换为`javax.servlet.http.HttpSession`. (2认同)