我想牢牢抓住,ajax
但我害怕我迷路了。下面的代码Wait
在单击按钮后呈现Join
按钮。Join
按钮actionListener
也被第一次调用。然后,在点击之后Wait
,Join
按钮被渲染,但Wait
按钮actionListener
没有被调用。最后,当您单击时,Join
没有任何反应。这是这个问题的轻微变化(我希望)(以防你们中的任何人看到类似的东西)
如果这是一个重复的问题,我很抱歉。如果 BalusC 已经从我发布的问题中回答了这个问题,坦率地说,我不理解原因。我已经到了没有任何意义的地步。我敢肯定这很愚蠢,但有人可以解释发生了什么吗?
<h:form>
<p:commandButton id="Join" actionListener = "#{connexion.joinWaitingList}"
update="@form" rendered="#{connexion.renderJoinButton}"
value="Join"/>
<p:commandButton id="leave" actionListener = "#{connexion.leaveWaitingList}"
update="@form" rendered="#{connexion.renderWaitButton}"
value="Wait"/>
</h:form>
java代码
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class Connexion implements java.io.Serializable {
private boolean renderJoinButton;
private boolean renderWaitButton;
public Connexion() {
renderJoinButton = true;
renderWaitButton = false;
}
public boolean isRenderJoinButton() {
return renderJoinButton;
}
public void setRenderJoinButton(boolean renderJoinButton) {
this.renderJoinButton = renderJoinButton;
}
public boolean isRenderWaitButton() {
return renderWaitButton;
}
public void setRenderWaitButton(boolean renderWaitButton) {
this.renderWaitButton = renderWaitButton;
}
public void joinWaitingList() {
System.out.println("Waiting list joined");
renderJoinButton = false;
renderWaitButton = true;
}
public void leaveWaitingList() {
System.out.println("Waiting list abandoned");
renderJoinButton = true;
renderWaitButton = false;
}
}
更新
我正在使用 JSF 2.2 和 PrimeFaces 3.5
更新#2
这似乎适用于 JSF 2.1 和 2.0.10。它不适用于 JSF 2.2。我已经在 Primefaces 论坛上发布了这个问题。一旦我得到他们的回复,我会更新这篇文章。
更新#3
感谢 jhond,我意识到了一个bug。此外,primefaces 社区的一位成员回复我说“只有最新的快照是兼容的”。