gpt4 book ai didi

jsf - 我什么时候应该使用 h :outputLink instead of h:commandLink?

转载 作者:行者123 更新时间:2023-12-03 04:31:00 26 4
gpt4 key购买 nike

我什么时候应该使用 <h:outputLink>而不是<h:commandLink>

据我了解,commandLink生成 HTTP 帖子;我猜outputLink将生成 HTTP 获取。也就是说,大多数 JSF tutorial material我读过用途commandLink (几乎?)完全。

上下文:我正在实现一个很小的演示项目,它显示指向用户页面的标题链接,很像 Stack Overflow 的...

needs more jquery

...我不确定是否 commandLink (也许使用 ?faces-redirect=true 来实现书签功能)或 outputLink是正确的选择。

最佳答案

<h:outputLink> 呈现完整的 HTML <a> href 中具有正确 URL 的元素触发可添加书签的 GET 请求的属性。它不能直接调用托管 bean 操作方法。

<h:outputLink value="destination.xhtml">link text</h:outputLink>
<小时/>

<h:commandLink> 呈现 HTML <a>具有 onclick 的元素提交(隐藏)POST 表单并可以调用托管 bean 操作方法的脚本。它还需要放置在 <h:form> 内。 .

<h:form>
<h:commandLink value="link text" action="destination" />
</h:form>

?faces-redirect=true <h:commandLink> 上的参数,它会在 POST 之后触发重定向(根据 Post-Redirect-Get 模式),仅在实际单击链接时提高目标页面的可书签性(URL 不再是“后面一个”),但它不会更改 href <a>的元素是一个完整的 URL。仍然保留# .

<h:form>
<h:commandLink value="link text" action="destination?faces-redirect=true" />
</h:form>
<小时/>

自 JSF 2.0 以来,还有 <h:link> 它可以采用 View ID(导航案例结果)而不是 URL。它将生成一个 HTML <a>元素以及 href 中正确的 URL .

<h:link value="link text" outcome="destination" />
<小时/>

因此,如果是为了纯粹且可添加书签的页面到页面导航(例如 SO 用户名链接),请使用 <h:outputLink><h:link> 。这对于 SEO 也更好,因为机器人通常不会加密 POST 表单或 JS 代码。此外,用户体验也将得到改善,因为页面现在可以添加书签,并且 URL 不再是“落后”。

必要时,可以在构造函数中进行预处理工作或者@PostConstruct@RequestScoped@ViewScoped @ManagedBean它附加到相关的目标页面。您可以使用@ManagedProperty<f:viewParam>将 GET 参数设置为 bean 属性。

另请参阅:

关于jsf - 我什么时候应该使用 h :outputLink instead of h:commandLink?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4317684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com