PrimeFaces commandButton不导航

时间:2013-06-03 19:48:47

标签: jsf-2 primefaces

我有这段代码:

Add.xhtml:

<h:form id="nouv">
    <h:panelGrid columns="2"> 
        <h:outputText value="Nom:"></h:outputText>
        <p:inputText value="#{ddeBean.nom}"></p:inputText>
        <p:commandButton  id="save"
                value="ajouter"    
                update=":nouv:btn"                         
                actionListener="#{ddeBean.ajouter}">
        </p:commandButton>

        <p:outputPanel id="btn"> 
            <h:outputText rendered="#{ddeBean.created}" value="#{ddeBean.message}"/>
            <p:commandButton id="btn_cr" value="add" rendered="#{ddeBean.created}" 
                    action="pool.xhtml?faces-redirect=true">
            </p:commandButton>
        </p:outputPanel>
    </h:panelGrid>
</h:form>

ddeBean.java:

@ManagedBean(name = "ddeBean")
@RequestScoped
public class DemandeBean implements Serializable{
    ddeDAO dao = new ddeDaoImpl();
    private String nom;
    public String message = "";
    private boolean created = false;

    public void test(ActionEvent event){
        Demande p = new Demande();
        p.setDde(this.nom);
        dao.Nouveau_dde(p);
        created = true;
        this.setMessage("saved!");
    }
}

单击commandButton Ajouter 时,将显示命令按钮添加,但命令按钮添加不会重定向到{{1 }}

1 个答案:

答案 0 :(得分:0)

当您单击添加按钮时,将重新创建bean,然后将值#{ddeBean.created}重新初始化为false,以便在执行操作之前不会呈现该按钮

要解决此问题,您需要将bean的范围更改为@ViewScoped

您还应该确保替换

public void test(ActionEvent event){

通过

public void ajouter(ActionEvent event){

如果您希望按钮正常工作。

另一种解决方案

由于您使用的是PrimeFaces,您可以通过JavaScript显示您的按钮:

<p:commandButton  id="save"
    value="ajouter"    
    oncomplete="panel-create.show();"                        
    actionListener="#{ddeBean.ajouter}">
</p:commandButton>

<p:outputPanel id="btn" style="display: none;" widgetVar="panel-create"> 
    <h:outputText value="#{ddeBean.message}"/>
    <p:commandButton id="btn_cr" value="add"
        action="pool.xhtml?faces-redirect=true">
    </p:commandButton>
</p:outputPanel>

请注意oncomplete上的p:commandButton属性,widgetVar上的p:panel属性以及rendered属性已删除。