1

演習として、ユーザーがログインするまで無効になっているメニューバーが必要です。ログインすると、更新をトリガーする何かを呼び出したいと思います。メニューバーはmaster.xhtmlテンプレートファイルにあります

<h:form >
  <p:menubar id="masterMenuBar">
  <p:menuitem disabled="#{backing.disableMenu}" value="List users" />
  </p:menubar>
</h:form>

ログインの一部として、フォームを更新するコードがあります

public void refreshForm() {
  RequestContext context = RequestContext.getCurrentInstance(); 
  context.update("form1"); 
  context.update("masterMenuBar");
}

定義済みのラベルのコンテキスト更新を呼び出すことで運を試しましたmasterMenuBarRequestContext、呼び出しテンプレートフォームが含まれていないようです (これは十分に妥当に聞こえます)。

メニューバーへのコンテキスト更新を含む、呼び出すことができる他のコンテキストはありますか? おそらく私は間違った道を進んでおり、同じことを達成するためのより良い方法はありますか?

backing.disableMenuブラウザーのサイズを変更しても、 Beanを再度呼び出す理由にはならないことに気付きました。どうやら、ビーンにもう一度到達させるには、かなり強力なものが必要なようです。

4

1 に答える 1

2

相対クライアント ID ではなく、絶対クライアント ID を渡す必要があります。masterMenuBar右クリックしてブラウザでソースを表示すると、要素にそのフォームの (自動生成された) ID がプレフィックスとして付けられていることがわかります。

メニューが固定IDにあるフォームを指定する必要があります

<h:form id="menuForm">
    <p:menubar id="masterMenuBar">
        ...

代わりに絶対クライアント ID を渡します。

context.update("menuForm:masterMenuBar");

更新: 申し訳ありませんが、 の属性:に反して、 で始まるべきではありません。update<p:commandButton>

于 2012-05-20T12:08:52.217 に答える