0

我试图了解如何使用此链接 https://blogs.oracle.com/enterprisetechtips/entry/post_redirect_get_and_jsf在 JSF 应用程序上执行 PRG, 但不知何故我对三个项目感到困惑。

  1. 从博客中,我从 firebug 看到它在呈现页面时发出 302 和 GET 重定向,而不是 PRG 的 POST 方法。博客中唯一的变化是 bean 的范围从会话范围变为请求范围。那么这个链接是否表明我所有的托管 bean 都处于请求范围级别?我检查了我正在做的示例应用程序,并且我大量使用 ViewScoped 和 SessionScope bean。

  2. ViewParameters 的用处是什么?这不是一个安全问题,假设我在 url 添加更多查询字符串参数?我实际上正在寻找一个关于我可以在哪里使用此类功能的用例。

  3. 如果我正在执行的事务不会执行任何事务性质,例如添加/编辑/删除,那么仅使用作为 POST 请求的 JSF 导航仍然是一个好习惯吗?我只是想导航到一个新页面。

谢谢

4

1 回答 1

1

那么这个链接是否表明我所有的托管 bean 都处于请求范围级别?我检查了我正在做的示例应用程序,并且我大量使用 ViewScoped 和 SessionScope bean。

bean 的范围对于 PRG 本身并不重要。它只对 bean 保存的数据的生命周期很重要。另请参阅如何选择正确的 bean 范围?


ViewParameters 的用处是什么?这不是一个安全问题,假设我在 url 添加更多查询字符串参数?我实际上正在寻找一个关于我可以在哪里使用此类功能的用例。

includeViewParams仅包含您在 中手动指定的参数<f:metadata><f:viewParam>。它不会包括所有原始查询参数。这对于 PRG 本身不是必需的。是否使用它取决于具体的功能需求。这篇文章只是展示了可以将所有视图参数复制到重定向 URL 中,这对于某些功能要求可能是有用的/强制性的。另请参阅<f:metadata>、<f:viewParam> 和 <f:viewAction> 可以用于什么?


我只是想导航到一个新页面。

使用<h:link>而不是<h:commandLink>.

<h:link value="Go to next.xhxml" outcome="next" />

另请参阅何时应该使用 h:outputLink 而不是 h:commandLink?

于 2012-04-25T13:43:08.580 回答