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

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

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

【问题讨论】:

    标签: jsf redirect commandlink


    【解决方案1】:

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

    1. 您可以继续使用纯 HTML。

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

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


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

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

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


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

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

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


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

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

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

    另见:

    【讨论】:

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