尝试在XPage(as explained here)上获取SSJS中的会话时,前面的类型只会达到getSession()
。
我可以看到getSession()
调用返回标准java.lang.Object
,这解释了为什么getSession()
之后的类型仅显示java.lang.Object
类的道具/方法。< / p>
但是,如果你继续并调用getId()
方法,如上面链接中所述,那么你可以保存XPage,它将运行没有问题。
没关系,但是如果我想在Java中进行相同的调用,代码将无法编译,因为如上面针对SSJS所述,返回的对象是标准的java.lang.Object
并且没有名为getId()
的方法。
因此,我可以转换返回的对象以允许我访问会话方法吗?如果是这样,我应该把它投到哪个班级?
答案 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
。