这是我的问题。
我需要:当我使用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>
出了什么问题?