2010-12-24 7 views
13

この動作が正常かどうかわかりません。
panelは、ajaxリクエストをトリガーするボタンをクリックした後にのみレンダリングされることを期待しています。フラグをtrueに設定します、JSF 2/primefaces:p:パネルはajaxでレンダリングされませんか?

  1. p:panel id="myPanel" rendered="#{myBean.flag}"
  2. p:commandButton ajax="false" action="#{myBean.setFlagToTrue}"
  3. ボタンをクリックする前に、myPanelは、ボタンをクリックする
  4. (flag = false)が表示されず、かつ:

    使用していないアヤックスが正常に動作しますmyPanelは細かくレンダリングされます

ajax

  1. p:panel id="myPanel" rendered="#{myBean.flag}"
  2. p:commandButton ajax="true" action="#{myBean.setFlagToTrue}" update="myPanel"
  3. ボタンをクリックする前に、myPanelが(私のログファイルで表示される)フラグをtrueに設定し、ボタンをクリックする
  4. (flag = false)が表示されていない、と:失敗myPanel は確かにAJAXの仕事を、私はレンダリングされた属性を省略して試してみた

をレンダリングし、されていません罰金。
パネル内に反映された変更を見ることでわかります。

答えて

30

条件付きレンダリングでパネルを別のパネルに配置して更新します。このように:

<p:outputPanel id="toUpdate"> 
    <p:panel id="myPanel" rendered="#{myBean.flag}"> 
    </p:panel> 
<p:outputPanel> 

<p:commandButton update="toUpdate"/> 

これは既知の問題です。要素がDOMに存在しない場合、要素を更新することはできません。

+0

非常にいいです。マジックのように動作します。ありがとうございました。 – bertie

+1

なぜこれを行う必要がありますか? – Makky

+0

それは動作します、これは素晴らしいです!ありがとうございます – Spartan

関連する問題