我目前正在学习 JSF,当我意识到每当我们使用 时<h:form>
,JSF 的标准行为总是在浏览器中显示上一页的 URL ,而不是当前页面的 URL,这让我感到非常惊讶和困惑。
我知道这与 JSF 总是将表单发布到同一页面然后只是将控制器返回给不知道页面位置已更改的浏览器的任何页面呈现给浏览器的方式有关。
似乎 JSF 已经存在了足够长的时间,必须有一个干净、可靠的方法来处理这个问题。如果是这样,你介意分享吗?
我找到了各种解决方法,但遗憾的是,似乎没有一个真正可靠的解决方案。
- 只需接受 URL 具有误导性即可。
- 附加
"?faces-redirect=true"
到每个bean 动作的返回值,然后- 弄清楚如何
@RequestScoped
用其他东西替换(Flash Scopes,CDI 对话,@SessionScoped,...)。 - 接受为每个用户操作进行两次 HTTP 往返。
- 弄清楚如何
- 使用某种方法(例如 3rd 方库或自定义代码)隐藏 URL 中的页面名称,始终为每个页面使用相同的通用 URL。
如果"?faces-redirect=true"
尽可能好,有没有办法配置整个应用程序以这种方式处理所有请求?