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

时间:2013-03-07 14:18:13

标签: java xpages lotus-domino xpages-ssjs

尝试在XPage(as explained here)上获取SSJS中的会话时,前面的类型只会达到getSession()

我可以看到getSession()调用返回标准java.lang.Object,这解释了为什么getSession()之后的类型仅显示java.lang.Object类的道具/方法。< / p>

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

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

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

1 个答案:

答案 0 :(得分: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();

班级LCDAdapterHttpSession实施javax.servlet.http.HttpSession