Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在页面显示之前使用条件导航逻辑设计JSF入口点页面?_Java_Jsf_Servlets_Redirect - Fatal编程技术网

Java 如何在页面显示之前使用条件导航逻辑设计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

我的JSF应用程序的入口点是
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");