应该何时使用h:link而不是h:commandLink?

Bes*_*ces 5 jsf-2

如果我有一个JSF页面,我想链接到那里我不需要与该页面进行任何通信,并且不需要在我链接的页面上执行任何验证,我应该总是使用h:link ?

不使用啊:commandLink(使用immediate ="true"或执行="@ this")会丢失任何内容吗?

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

Mat*_*ndy 15

h:link会触发一个完整的GET请求.将仅调用JSF生命周期阶段1(恢复视图)和6(渲染响应).没有转换,没有验证,没有行动.

因此immediate="true"并且execute="@this"不起作用(它们根本不可用h:link).

使用h:link纯逐页导航和h:commandLink(这触发一个POST请求)如果输入数据需要在服务器上进行处理.

附录:

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

  • 第一段并不完全正确。当目标页面有 `<f:viewParam>` 时,其他阶段将被调用。 (2认同)