当我偶然发现这个问题时,我正在玩 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>
我的支持 bean 包含以下内容,
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)会正确呈现。但是,当我单击第二个按钮(单击我)时,面板会被隐藏,并且单击第二个按钮时,它永远不会转到支持 bean 方法“disply()”。
我在第二个按钮中使用了动作监听器,但同样的行为。另外,我在第二个按钮中给出了 update = "p2" ,即使这并没有产生我想要的结果。
谁能帮我解决这个问题,让我知道我在哪里做错了什么?
谢谢你。