在Portal Application中访问FacesContext

时间:2011-08-30 10:13:57

标签: websphere-portal facescontext

我们需要在Portal应用程序中从PortletRequest获取某些信息。我们在Portlet应用程序中使用实用程序方法。在此Utility方法中,我们访问FacesContext.getCurrentInstance().getRequest()以获取PortletRequest。我们在DAO层中访问此实用程序方法。我们在这里无权访问请求参数。 它有时会起作用,但有时会给我NullPointerException。我发现了一个类似的thread来解释这一点。他们已经提到,如果它是同一个请求的一部分,那么你应该得到Context。对我来说,它是同一请求的一部分,但我没有得到上下文。你能帮我吗?

2 个答案:

答案 0 :(得分:0)

如果从FacesContext.getCurrentInstance()获取空FaceContext,则不会为此线程/请求构造FacesContext。

失败的请求是否通过非面孔入口点?如Event或Resource portlet请求?如果是这样,将不会创建FacesContext。

您应该考虑从PortletRequest中提取所需内容并将其传递到堆栈中,而不是依赖静态方法和线程本地存储来访问DAO中的数据。将表层图像伪像(例如FaceContext或PortletRequest)与DAO图层混合是不好的做法。

答案 1 :(得分:0)

如果您的应用程序部署在单独的WAR / JAR文件中,则可能使用不同的类加载器。当我尝试访问JBOSS5上的hibernate HAR存档中的FacesContext时,我遇到了类似的问题。我想出了一个使用反射API的成功解决方案。看看this

如果将整个应用程序捆绑到一个EAR中,则可以强制使用一个类加载器用于整个耳朵,但AFAIK是特定于应用程序服务器的。

此致