Java 如何在页面显示之前使用条件导航逻辑设计JSF入口点页面?
我的JSF应用程序的入口点是Java 如何在页面显示之前使用条件导航逻辑设计JSF入口点页面?,java,jsf,servlets,redirect,Java,Jsf,Servlets,Redirect,我的JSF应用程序的入口点是EntryPoint.jsp。我们使用的是JSF1.2。用户可以使用许多不同的URL参数调用EntryPoint.jsp。我想解析这些参数,加载一个具有某种状态的会话bean,在页面加载之前执行所有这些操作,然后继续处理/显示EntryPoint.jsp,或者向前/重定向到应用程序中的另一个页面。有人能推荐最好的设计吗 我已经在EntryPoint.java支持bean中进行了尝试(删除了异常处理): 但是我得到了一个非法状态异常:响应已经提交 我也试过了 Faces
EntryPoint.jsp
。我们使用的是JSF1.2。用户可以使用许多不同的URL参数调用EntryPoint.jsp
。我想解析这些参数,加载一个具有某种状态的会话bean,在页面加载之前执行所有这些操作,然后继续处理/显示EntryPoint.jsp
,或者向前/重定向到应用程序中的另一个页面。有人能推荐最好的设计吗
我已经在EntryPoint.java支持bean中进行了尝试(删除了异常处理):
但是我得到了一个非法状态异常:响应已经提交
我也试过了
FacesContext.getCurrentInstance().getExternalContext().redirect("/other.jsp");
但是也会得到一个非法状态异常(没有消息)。显然,这不是一个合适的方式或地点来做这件事。有谁能推荐一个更好的方法来实现我的目标吗
似乎表明servlet过滤器可能是一个不错的选择。如果是这样,会话作用域JSF支持bean是否可以在servlet过滤器中使用?这对于JSF 1.x来说确实不起作用。正如您在另一个问题中发现的那样,
过滤器
确实更适合此工作。自那时以来,这个答案一直没有改变。会话范围的JSF托管bean存储在HttpSession
中,托管bean名称作为会话属性名称。是的,它可以在过滤器中访问。更重要的是,过滤器可以预先创建它并将其放入会话中。JSF将使用它,而不是自动创建一个。太好了,谢谢。您的最后一句话特别回答了我的小问题(即会话bean是否在任何JSF框架交互之前可用)。您只需要记住,@EJB
、@PostConstruct
等不会被注入/调用。但我不认为这是一个问题,因为您通常不会在会话范围的bean上看到它。
FacesContext.getCurrentInstance().getExternalContext().redirect("/other.jsp");