I have a question about jsf framework. This is my controller: 
controller
package controller;
@ManagedBean
@ViewScoped
#public class Controller implements Serializable {
    private boolean blView;
    @PostConstruct
    public void init() {
        blView = true;
    }
    public void add() {
        System.out.println("This is method add");
        blView = false;
    }
    public void back() {
        System.out.println("This is method back");
        blView = true;
    }
    public boolean isBlView() {
        return blView;
    }
    public void setBlView(boolean blView) {
        this.blView = blView;
    }
}
File index.xhtml
<h:form id="frmView" > <p:panel id="pnlControl"> <p:commandButton id="p1" actionListener="#{controller.back()}" immediate="true" rendered="#{!controller.blView}" process="@this" value="Back" update=":frmView:pnlControl :frmView:pnlAdd"/> <p:commandButton id="p2" actionListener="#{controller.add()}" immediate="true" rendered="#{controller.blView}" value="Add" process="@this" update=":frmView:pnlControl :frmView:pnlAdd"/> </p:panel> <p:panel id="pnlAdd" visible="#{!controller.blView}"> <p:panelGrid columns="2" > <f:facet name="header" > Info </f:facet> <h:outputLabel value="Name: " /> <h:inputText value="Hello Viet Nam." /> </p:panelGrid> </p:panel>
So, when I added or deleted attribute actionListener="#controller.back()}", the method back() are not enforced when I click on the button. Thank advance.