gpt4 book ai didi

jsf - 何时使用 NavigationHandler.handleNavigation 与ExternalContext.redirect/dispatch

转载 作者:行者123 更新时间:2023-12-02 02:13:37 27 4
gpt4 key购买 nike

以下内容似乎是等效的:

FacesContext.getCurrentInstance().getApplication().getNavigationHandler().handleNavigation("/index.xhtml?faces-redirect=true");

FacesContext.getCurrentInstance().getExternalContext().redirect("/testapp/faces/index.xhtml");

有什么区别以及什么时候应该使用它们?

最佳答案

NavigationHandler#handleNavigation()您依赖于实现的导航处理程序的方法。您或第三方可以轻松地在网络应用程序中覆盖/提供此内容。如果您想要更细粒度的控制,这可能是有利的,但如果您根本不想受到外部可控影响,这可能是不利的。使用某些 URL 和/或参数可能会导致不同的导航行为。

ExternalContext#redirect()各位代表立即调用HttpServletResponse#sendRedirect() ,不涉及任何导航处理程序。因此,当使用导航处理程序有潜在的缺点时,这可能是一个优点。但缺点是它不处理隐式导航,也不考虑定义的导航情况。

总而言之,这取决于:)如果您只想进行全面且切中要害的重定向,请使用ExternalContext#redirect()。如果您想通过结果而不是 URL 进行导航,请使用 NavigationHandler#handleNavigation()

另请参阅:

关于jsf - 何时使用 NavigationHandler.handleNavigation 与ExternalContext.redirect/dispatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282687/

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