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()
.
因此,我可以转换返回的对象以允许我访问会话方法吗?如果是这样,我应该把它投到哪个班级?
代码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
.