ユーザーが管理者であるかどうかによって、PrimeFacesタブのレンダリングを制限しようとしています。Beanの値が変更された後のページの更新
<p:tab title="Admin" rendered="#{userSession.isAdmin}">
マイUserSessionクラス:
私はそうするために、次のELを使用しています
@ManagedBean(name="userSession")
@SessionScoped
public class UserSession {
.
.
.
public boolean isAdmin;
public UserSession() {
isAdmin = false;
}
public void addRole(String role) {
if (role.equals("ADMIN") {
this.isAdmin = true;
}
role.add(role)
}
}
addRole()メソッドが呼び出されるのと役割 "ADMIN" を追加します。私はこれが良いことではないことを知っていますが、私はその時点でテスト目的でしか使用していません。
私の問題は、isAdminがコンストラクタでfalseとして認識されるため、タブがレンダリングされていないことです。コンストラクタをtrueに変更すると、レンダリングされます。
isAdminは後でtrueになるようにするにはどうすればよいですか?すなわち、ADMINロールがユーザのセッションに与えられた後?
変更後に 'isAdmin'プロパティを再取得できるようにページを再読み込みすることはできますか?
addRole()をajaxリクエストで呼び出し、タブを更新します。 –
@ ShadyAzizはAjaxリクエストですか?確かに、あなたがタブを更新すれば、それが変更されたことを '見る'ことができるでしょうか? – James
はい、そうです。ここのプリンシパルについて考えてみましょう。あなたは、バックエンドで関数を呼び出して、それをレンダリングするかどうかをUIの特定のモジュールを更新したいとします。 私はそれについてプライムフェイスで読むことをお勧めします。ここには簡単な例があります http://www.primefaces.org/showcase/ui/ajax/basic.xhtml –