如何在 JSF 2.0 中重定向

Posted

技术标签:

【中文标题】如何在 JSF 2.0 中重定向【英文标题】:How can I redirect in JSF 2.0 【发布时间】:2011-04-26 06:23:19 【问题描述】:

我想从 JSF 页面中的链接重定向,我该怎么做?

html 中,我可以为此使用 <a> 标签。但在 JSF 中,我使用 <h:outputLink><h:commandLink>,因为它们可以有条件地呈现。我想将链接重定向到同一应用程序中的其他页面或外部 URL。我怎样才能用 JSF 做到这一点?我怎样才能在<h:commandLink> 中使用action 呢?

【问题讨论】:

【参考方案1】:

假设您想重定向到位于网络根文件夹中的some.xhtml

    您可以继续使用纯 HTML。

     <a href="#request.contextPath/some.xhtml">go to some page</a>
    

    对于条件渲染,just wrap it in an &lt;ui:fragment&gt;


    或者将&lt;h:link&gt; 与隐式导航一起使用。

     <h:link outcome="/some" value="go to some page" />
    

    注意:无需预先添加上下文路径,也无需包含 FacesServlet 映射。


    或者使用&lt;h:commandLink&gt;?faces-redirect=true

     <h:commandLink action="/some?faces-redirect=true" value="go to some page" />
    

    注意:无需预先添加上下文路径,也无需包含 FacesServlet 映射。


    或者使用&lt;h:outputLink&gt;,但是需要指定上下文路径。

     <h:outputLink value="#request.contextPath/some.xhtml" value="go to some page" />
    

重定向到外部 URL 已在此副本中得到回答:Redirect to external URL in JSF。

另见:

How to navigate in JSF? How to make URL reflect current page (and not previous one) When should I use h:outputLink instead of h:commandLink? JSF implicit vs. explicit navigation

【讨论】:

嗨,Balus,谢谢,但我的包含页面有问题,我将菜单页面包含到主页中,当我点击注册链接时,它没有重定向到注册页面,你能帮帮我吗?谢谢 !最好的问候 h:link 结果必须指向没有扩展名的页面的文件名,并且必须与主页在同一文件夹中。 我使用 h:commandLink,但是如果一个文件夹中的菜单页面和另一个文件夹中的注册页面,并且我将菜单页面包含到主页中(它在所有文件夹之外),它可以被重定向吗?在我的支持bean中,如果返回字符串结果我必须返回诸如return "../register"?感谢您的回复! UICommand 组件应该放在h:form 中。结果必须与页面文件名匹配。如果是 URL,则需要在 faces-config.xml 中定义导航案例。另一方面,您也可以使用h:outputLink。这与&lt;a&gt; 的行为完全相同。

以上是关于如何在 JSF 2.0 中重定向的主要内容,如果未能解决你的问题,请参考以下文章

如何在PHP中重定向到同一页面

如何在NGINX中重定向一个网址

如何在 React 中重定向

如何在 laravel jetstream 中重定向?

如何在点击时在 React 中重定向?

如何确定 URL 是不是在 PHP 中重定向?