我在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">
,当我再次点击我的主菜单时回到“用户”,网址看起来像这样:
答案 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>
完全是多余的。