0

私は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>

それは問題なく動作しますが、私のページの1つにいるとき..「users.xhtml」と言って、そのページから「詳細」などの別のページに移動<h:outputLink value="../contenido/detalleUsuario.xhtml">し、プリンシパルメニューでもう一度クリックして「ユーザー」に戻ると、 URL は次のようになります。

contenido/contenido/Usuarios.xhtml が contenido/Users.xhtml になるはずです。そのため、「ページが見つかりません」というエラーが発生します。

4

1 に答える 1

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>コード内の全体は完全に不要です。

于 2013-02-04T15:28:36.173 に答える