この問題に遭遇したとき、私は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" を指定しましたが、それで望んだ結果が得られませんでした。
誰かがこれで私を助けて、私がどこで何を間違っているのか教えてもらえますか?
ありがとうございました。