Java facesContext.getExternalContext().getRequest().getSession()的返回对象是什么类?
当尝试在XPage()上的SSJS中获取会话时,前面的类型只会到达Java facesContext.getExternalContext().getRequest().getSession()的返回对象是什么类?,java,xpages,lotus-domino,xpages-ssjs,Java,Xpages,Lotus Domino,Xpages Ssjs,当尝试在XPage()上的SSJS中获取会话时,前面的类型只会到达getSession() 我可以看到getSession()调用返回一个标准的java.lang.Object,这解释了为什么前面的类型beyondgetSession()只显示java.lang.Object类的道具/方法 但是,如果您继续并调用getId()方法,如上面的链接所述,那么您可以保存XPage,它将毫无问题地运行 这很好,但是如果我想在Java中进行相同的调用,代码将不会编译,因为正如上面提到的SSJS,返回的对象
getSession()
我可以看到getSession()
调用返回一个标准的java.lang.Object
,这解释了为什么前面的类型beyondgetSession()
只显示java.lang.Object
类的道具/方法
但是,如果您继续并调用getId()
方法,如上面的链接所述,那么您可以保存XPage,它将毫无问题地运行
这很好,但是如果我想在Java中进行相同的调用,代码将不会编译,因为正如上面提到的SSJS,返回的对象是标准的Java.lang.object
,并且没有名为getId()
的方法
因此,我可以强制转换返回的对象以允许我访问会话方法吗?如果是这样,我应该将其强制转换到哪个类?代码
facesContext.getExternalContext().getRequest().getSession()
返回类com.ibm.designer.runtime.domino.adapter.servlet.lcdadapterthttpsession
如果需要知道对象所属的类,只需将.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();
类
lcdadapterthttpsession
实现javax.servlet.http.HttpSession
代码facesContext.getExternalContext().getRequest().getSession()
返回类com.ibm.designer.runtime.domino.adapter.servlet.lcdapterthttpsession
如果需要知道对象所属的类,只需将.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();
类
lcdadapterthttpsession
实现了javax.servlet.http.HttpSession
谢谢Naveen。所以问题是,在Java中,'getSession(boolean)'返回Java.lang.Object,它不允许我访问会话的方法('getId()'等)。所以我的问题是,我需要将返回对象强制转换到哪个类?您提到的类和包(com.ibm.designer.runtime.domino)在使用Java设计元素时似乎不可用。@lee_mcmullen:更新了我的答案以包含代码段。另外,请尝试将代码facesContext.getExternalContext().getRequest().getSession().getClass().getName()
放在计算字段中,以查看它打印的是哪个类。我认为重要的是要强调,对于开发人员来说,实际实现是什么并不重要(lcdadapterthttpsession
),您应该转换到javax.servlet.http.HttpSession
。谢谢Naveen。所以问题是,在Java中,'getSession(boolean)'返回Java.lang.Object,它不允许我访问会话的方法('getId()'等)。所以我的问题是,我需要将返回对象强制转换到哪个类?您提到的类和包(com.ibm.designer.runtime.domino)在使用Java设计元素时似乎不可用。@lee_mcmullen:更新了我的答案以包含代码段。另外,请尝试将代码facesContext.getExternalContext().getRequest().getSession().getClass().getName()
放在计算字段中,以查看它打印的是哪个类。我认为重要的是要强调,对于开发人员来说,实际实现是什么并不重要(lcdadapterthttpsession
),您应该转换到javax.servlet.http.HttpSession
。我想从开始,但我不确定。我想从开始,但我不确定。