如何在jsf 2中重定向页面?

时间:2013-02-04 15:22:18

标签: redirect jsf-2

我在jsf上有一个简单的菜单:

 <h:panelGroup id="panelMenu">
    <h:form id="menuForm">
    <ul class="nav nav-tabs" id="myTab">
        <li class="active"><h:outputLink value="contenido/Agrupaciones.xhtml"><h:outputText value="Agrupaciones" /></h:outputLink></li>
        <li><h:outputLink value="contenido/Usuarios.xhtml" ><h:outputText value="Usuarios" /></h:outputLink></li>
        <li><h:outputLink value="contenido/Modulos.xhtml" ><h:outputText value="Modulos" /></h:outputLink></li>
        <li><h:outputLink value="contenido/Roles.xhtml" ><h:outputText value="Roles" /></h:outputLink></li>
    </ul>
    </h:form>
    </h:panelGroup>

它工作正常,但当我在我的一个页面上时..让我说“users.xhtml”并从该页面转到另一个像“详细信息”<h:outputLink value="../contenido/detalleUsuario.xhtml">,当我再次点击我的主菜单时回到“用户”,网址看起来像这样:

contenido / contenido / Usuarios.xhtml应该是contenido / Users.xhtml。所以我得到了“找不到页面错误”。

1 个答案:

答案 0 :(得分:3)

使用<h:link>代替<h:outputLink><h:link>将路径视为导航案例结果,并始终相对于上下文路径解析它。因此,您可以安全地使用/开始结果,而无需担心上下文路径。

<li class="active"><h:link value="Agrupaciones" outcome="/contenido/Agrupaciones.xhtml" /></li>
<li><h:link value="Usuarios" outcome="/contenido/Usuarios.xhtml" /></li>
<li><h:link value="Modulos" outcome="/contenido/Modulos.xhtml" /></li>
<li><h:link value="Roles" outcome="/contenido/Roles.xhtml" /></li>

请注意,这些链接根本不需要表单。因此,代码中的整个<h:form>完全是多余的。