【发布时间】:2012-06-27 17:17:46
【问题描述】:
如果我有一个想要链接到的 JSF 页面,我不需要与该页面进行任何通信并且不需要对我要链接的页面执行任何验证,我是否应该始终使用h:链接?
不使用 h:commandLink(使用 immediate="true" 或 execute="@this")会丢失任何东西吗?
在这种情况下,h:link 和 h:commandLink 有什么区别吗?
【问题讨论】:
标签: jsf-2
如果我有一个想要链接到的 JSF 页面,我不需要与该页面进行任何通信并且不需要对我要链接的页面执行任何验证,我是否应该始终使用h:链接?
不使用 h:commandLink(使用 immediate="true" 或 execute="@this")会丢失任何东西吗?
在这种情况下,h:link 和 h:commandLink 有什么区别吗?
【问题讨论】:
标签: jsf-2
h:link 将触发完整的 GET 请求。只有 JSF 生命周期阶段 1(恢复视图)和 6(呈现响应)将被调用。没有转换,没有验证,没有操作。
因此immediate="true" 和execute="@this" 将不起作用(它们根本不适用于h:link)。
如果需要在服务器上处理输入数据,则使用 h:link 进行纯页面导航,使用 h:commandLink(触发 POST 请求)。
附录:
根据 BalusC 的评论生命周期阶段 2 到 5,如果目标页面包含 f:viewParams,则不会跳过 GET 请求。
【讨论】:
<f:viewParam>s 时将调用其他阶段。