0

我有这个代码:

添加.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时,将显示命令按钮Add的消息,但 commandbutton Add不会重定向到.pool.xhtml

4

1 回答 1

0

当您单击按钮Add时,将重新创建 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:panelrendered删除的属性。

于 2013-06-03T19:56:27.867 回答