この問題に遭遇したとき、私はprimefacesコンポーネントをいじっていました...
以下を含むサンプルページがあります。
<h:form>
  <p:panel id="p1">
  <p:commandButton value="display" actionListener="#{myTestBean.display}" update="p2">     </p:commandButton>
  </p:panel>
  <p:panel id="p2" rendered="#{myTestBean.show}">
  <p:inputText value="#{myTestBean.val1}" id="t1"></p:inputText>
  <p:inputText value="#{myTestBean.val2}" id="t2"></p:inputText>
  <p:commandButton value="click me" update="@form" action="#{myTestBean.disply}"></p:commandButton>
  </p:panel>
   </h:form>
私のバッキングビーンには以下が含まれています。
 public class Testbean implements Serializable {
    private String val1;
  private String val2;
  private boolean show;
    //getters and setters for the above...
        public void display(){
    if(show == false){
        setShow(true);
    }
}
public void disply(){
    System.out.println("I am here");
    val1 = "hi";
    val2 = "hello";
    if(show == false){
        setShow(true);
    }
}
}
ここでの問題は、最初のボタン (表示) をクリックすると、下のパネル (p2) が正しくレンダリングされることです。しかし、2 番目のボタン (クリックしてください) をクリックすると、パネルが非表示になり、2 番目のボタンをクリックしても、バッキング Bean メソッド 'disply()' に移動しません。
2 番目のボタンでアクション リスナーを使用しましたが、これも同じ動作です。また、2 番目のボタンに update = "p2" を指定しましたが、それで望んだ結果が得られませんでした。
誰かがこれで私を助けて、私がどこで何を間違っているのか教えてもらえますか?
ありがとうございました。