我正在学习JSF,当我意识到每当我们使用时<h:form>,JSF的标准行为总是向我显示浏览器中上一页的URL ,而不是当前页面的URL,我感到非常惊讶和困惑.
我知道这与JSF总是将表单发布到同一页面的方式有关,然后只是呈现控制器将其返回给浏览器的任何页面,而浏览器不知道页面位置已更改.
似乎JSF已经存在了足够长的时间,必须有一个干净,可靠的方法来处理这个问题.如果是这样,你介意分享吗?
我找到了各种解决方法,但遗憾的是,这似乎不是一个真正可靠的解决方案.
"?faces-redirect=true"到每个 bean的操作的返回值然后
@RequestScoped用其他东西替换(Flash Scopes,CDI对话,@ SessionScoped,......).如果它"?faces-redirect=true"是如此好,有没有办法配置整个应用程序以这种方式处理所有请求?
在p:ajax调用上,侦听器调用包含以下内容的方法
FacesContext.getCurrentInstance().getExternalContext().dispatch("/uri.jsf");
Run Code Online (Sandbox Code Playgroud)
不起作用。我已经在行上设置了一个断点,它在执行时保持在同一点。它并没有前进,我必须重新启动服务器以再次运行该应用程序。
FacesContext.getCurrentInstance().getExternalContext().redirect("/uri.jsf");
Run Code Online (Sandbox Code Playgroud)
重定向工作正常。但是我想要转发的页面向前导航到另一个页面。