JavaServer Faces导航

时间:2011-03-15 14:42:47

标签: jsf

我有一个使用JSF的应用程序,它有一个导航错误。主页,即index.jsp(但我有一个index.faces文件 - 此文件列在欢迎列表中)上面有一个表单。提交表单时,将调用辅助bean,它会创建一个新视图并将其设置为当前视图。此视图是网站流程中的下一页。

这是怎么回事:当用户第一次访问该网站时(或者如果浏览器历史记录被清除),表单提交将保留在同一页面上。直到第二次提交表单时才会显示以下页面。

首次点击时,网址从http://companyconnector.com/更改为http://companyconnector.com/index.faces;jsessionid= ...

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试将支持bean的范围从会话范围更改为请求范围?无论如何,这是哪个版本的JSF?

答案 1 :(得分:0)

这不是一个错误,这就是JSF从根本上起作用的方式:输入表单对呈现它的JSF视图执行POST请求,并且操作方法的结果与导航规则一起确定随后显示的视图。但是,这种灵活性意味着导航无法立即反映在URL中,因为提交请求的浏览器不知道应用程序将决定显示哪个视图(= URL)。毕竟,即使没有复杂的逻辑确定下一个视图,也总会有验证错误导致当前视图再次显示。

有很多方法,但它们有局限性:

  • 您可以为每个导航规则添加<redirect/>,但这会降低应用程序的速度
  • 在JSF 2中,您可以使用view parameters,但这仅适用于特定网页上的“可收藏的网址”,不适用于一般用途。但是it can be abused几乎要到达那里。