【发布时间】:2012-12-10 15:29:17
【问题描述】:
我正在开发一个 JSF (v1.2) 应用程序。在我的应用程序中,我需要一个可以为任何资源(PDF、图像、Excel 等)提供服务的通用 servlet。我的想法是让调用者发送所需的信息,以便我可以使用一些配置找到正确的委托类。
这个委托类将负责提供正确的资源。
例如这是请求的url
http://example.com/servlet?delegatorid=abcd
我的 Servlet 代码是这样的。
protected void doGet(HttpServletRequest request, HttpServletResponse response){
String delegatorID=request.getParameter("delegatorid");
//Get the configuration from Configuration table
configuration=getConfiguration(delegatorID);
//invoke the method of the delegator class based on this configuration
Object result=invokeMethod(configuration);
//write the response to the stream
}
我的问题是在 JSF 项目中执行此操作的最佳方法是什么?
- 我应该在这个操作中完全避免 JSF 依赖吗?我可以找到委托方法和类并使用反射调用它。如果我避免 JSF 依赖,将来会不会有任何潜在的限制。 [我可以考虑的一个问题是,在其中一个代码中,我需要从 session.xml 中获取用户信息。我正在通过 FacesContext 执行此操作。由于 FacesContext 不可用,它会失败,我应该有另一个选项来获取会话。
- 如果我必须引入 JSF 依赖,我如何获得 FacesContext 这里?据我所知,只有存储在 应用范围可以在这里访问。我不想那样做。有没有其他途径获得?
- 我可以通过调用 ManagedBean 来代替使用 servlet 方法直接使用URL?这会给我 FacesContext。一世 认为我需要为托管 bean 方法创建一个虚拟 JSP 页面 被调用。
能否请您谈谈您对此的看法?
【问题讨论】: