【问题标题】:When should one use h:link instead of h:commandLink?什么时候应该使用 h:link 而不是 h:commandLink?
【发布时间】:2012-06-27 17:17:46
【问题描述】:

如果我有一个想要链接到的 JSF 页面,我不需要与该页面进行任何通信并且不需要对我要链接的页面执行任何验证,我是否应该始终使用h:链接?

不使用 h:commandLink(使用 immediate="true" 或 execute="@this")会丢失任何东西吗?

在这种情况下,h:link 和 h:commandLink 有什么区别吗?

【问题讨论】:

标签: jsf-2


【解决方案1】:

h:link 将触发完整的 GET 请求。只有 JSF 生命周期阶段 1(恢复视图)和 6(呈现响应)将被调用。没有转换,没有验证,没有操作。

因此immediate="true"execute="@this" 将不起作用(它们根本不适用于h:link)。

如果需要在服务器上处理输入数据,则使用 h:link 进行纯页面导航,使用 h:commandLink(触发 POST 请求)。

附录:

根据 BalusC 的评论生命周期阶段 2 到 5,如果目标页面包含 f:viewParams,则不会跳过 GET 请求。

【讨论】:

  • 在原始问题中,对 immediate 和 execute in 的引用是针对 commandLink,而不是 h:link
  • 第一段并不完全正确。当目标页面有<f:viewParam>s 时将调用其他阶段。
  • @BalusC 感谢您的提示。更新了我的答案。
猜你喜欢
  • 2015-12-11
  • 2019-06-15
  • 2011-06-22
  • 2012-02-12
  • 2010-11-29
  • 2015-12-23
  • 1970-01-01
  • 2012-12-09
相关资源
最近更新 更多