如何在 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 <ui:fragment>
。
或者将<h:link>
与隐式导航一起使用。
<h:link outcome="/some" value="go to some page" />
注意:无需预先添加上下文路径,也无需包含 FacesServlet
映射。
或者使用<h:commandLink>
和?faces-redirect=true
。
<h:commandLink action="/some?faces-redirect=true" value="go to some page" />
注意:无需预先添加上下文路径,也无需包含 FacesServlet
映射。
或者使用<h:outputLink>
,但是需要指定上下文路径。
<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
。这与<a>
的行为完全相同。以上是关于如何在 JSF 2.0 中重定向的主要内容,如果未能解决你的问题,请参考以下文章