0

1 つは「登録」リンクと「ログイン」リンク、もう 1 つは「ログアウト」リンクを含む 2 つのパネル グループがあります。ログインすると、「ログイン」リンクのみが消え、「登録」はレンダリングされたままになり、「ログアウト」はレンダリングされません。#{user.loggedIn}" は、ユーザーがログインしているときに true を返します。また、デバッグ モードで画面を更新すると、そのメソッドが実行されていることがわかります。これを正しく機能させる方法についての提案。コードは説明的である必要があります。 、そうでない場合はお知らせください。

<h:panelGroup rendered="#{!user.loggedIn}">
  <li>
    <h:outputLink id="loginLink" value="javascript:void(0)" onclick="dlg.show()" title="login" styleClass="loginpanelclass">Log In</h:outputLink>
  </li>
  <li>
    <h:link value="Register" outcome="/registration/register.xhtml" />
  </li>
</h:panelGroup>

<h:panelGroup rendered="#{user.loggedIn}">
  <li>
    <h:commandLink action="#{user.logout()}">Logout</h:commandLink>
  </li>
</h:panelGroup>
4

1 に答える 1

0

参照する要素は、参照元のネーミング コンテナー内にない場合、ネーミング コンテナー内にある必要があります。私にとっては、質問の最初のリンクがクリックされたときに、primefaces を使用してログイン ダイアログを起動します。ダイアログの中にフォームがあります。そのフォームが完了すると、p:dialog update 属性を使用して、上記の質問のパネルにレンダリングするかどうかを指示します。質問のパネルを名前付けコンテナー内に配置する必要があり、階層を介して「:」表記を使用してそれらを正常に参照できました。

誰かが問題を抱えている場合は、コンポーネント階層と JSF のコンテナーの名前付けに関する記事を探してください。上記のダニエルのコメントで与えられたヒントと、階層を調べてコンテナに名前を付けて見つけたものを使用して、今のところこれで十分だと判断しました。まだいくつかの不確実性がありますが、私のコードは今のところやりたいことをしています。:) ダニエルがリンクされた質問で与えた答えを 1 つずつマークしています。

于 2012-07-11T16:34:25.357 に答える