1

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

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

但是,如果您继续并调用该getId()方法(如上面链接中所述),那么您可以保存 XPage,它会毫无问题地运行。

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

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

4

1 回答 1

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.

于 2013-03-07T14:32:44.940 回答