为什么在ajax之后没有调用actionListener:update和按钮没有被渲染

时间:2013-07-08 19:39:38

标签: jsf jsf-2 primefaces jsf-2.2

我正试图牢牢掌握ajax,但我担心自己会迷失方向。单击Wait按钮后,下面的代码会显示Join按钮。 Join按钮的actionListener也会在第一时间被调用。然后,点击Wait后,Join按钮会被呈现,但不会调用Wait按钮的actionListener。最后,当你点击Join时没有任何反应。这是一个轻微的变化(我希望)这个问题(如果有人看到类似的东西)

commandButton inactive after ajax rendering

如果这是一个重复的问题,我很抱歉。如果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; 
    }
}

更新

我正在使用PrimeFaces 3.5的JSF 2.2

更新#2

这似乎适用于JSF 2.1和2.0.10。它不适用于JSF 2.2。我在Primefaces论坛上发布了这个问题。我收到他们的回复后,我会更新这篇文章。

更新#3

感谢jhond,我意识到bug。 此外,其中一个主要社区成员回到我身边,并说“只有最新的快照才兼容”。

0 个答案:

没有答案