Primefaces命令按钮在重定向后不会更新

时间:2014-11-19 19:30:52

标签: java-ee jsf-2 primefaces

这是我的问题。

我需要:当我使用p:commandButton时,在数据库中执行某些操作,重定向到同一页面,隐藏按钮并显示状态消息。

发生了什么:当我使用p:commandButton时,在数据库中做了一些事情,重定向到同一页面,但都没有更新。 p:commandButton仍然显示,状态消息未显示。就像重定向不起作用一样。

奇怪的是,如果我点击链接(页面顶部),两者都会更新,表现正常。

我的网址: localhost / myapp / mypage.xhtml

我的模特课程:

public class MyClass {

    private String name;
    private boolean waitingDeleteConfirmation;

    // getters/setters
}

我的管理Bean:

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class MyClassManagedBean {

    private List<MyClass> list;

    @PostConstruct
    public void load() {
        this.list = //database get list;
    }

    public boolean showButton(MyClass myClass){
        if(myClass.isWaitingDeleteConfirmation() && isPossibleDelete()/*came from database as TRUE*/)
            return false;
        return true;
    }

    public String doDelete(MyClass) {
        //do something in database
        return "mypage?faces-redirect=true";
    }
}

我的xhtml页面:

<h:link outcome="mypage.xhtml?faces-redirect=true" value="Delete Page"/>

<h:form>
<p:dataTable value="#{myClassManagedBean.list}" var="listItem">

<p:column headerText="Name">
    <h:outputText value="#{listItem.name}" />
</p:column>

<p:column headerText="Delete">
    <p:commandButton rendered="#{myClassManagedBean.showButton(listItem)}"
                     action="#{myClassManagedBean.doDelete(listItem)}"
                     ajax="false" icon="ui-icon-trash" />
</p:column>

<p:column headerText="Status">
    <h:outputText rendered="#{not myClassManagedBean.showButton(listItem)}" value="Waiting confirmation" />
</p:column>

</p:dataTable>
</h:form>

出了什么问题?

0 个答案:

没有答案