【发布时间】:2014-02-20 06:24:51
【问题描述】:
我有一个简单的例子来解决我的问题。我有一个数据表,我想在排序、过滤或页面事件上禁用页脚中的按钮。我更新了页脚中的按钮,但没有任何变化。另一种形式的另一个按钮可以正常工作。如果我用“@form”更新整个表格,表格将被销毁。
我找到了 Primefaces Extensions pe:RemoteCommand (http://fractalsoft.net/primeext-showcase-mojarra/sections/remoteCommand/basicUsage.jsf) 的解决方案...如果我使用事件的 onComplete-Methode 并调用 remoteCommand,那么我可以从那里更新页脚中的按钮。
谁能解释一下? 感谢您的时间。
XHTML:
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
<h:form id="tableform">
<p:dataTable value="#{bean.personList}" var="person" paginator="true"
rows="5" rowKey="#{person.id}">
<p:ajax event="page" listener="#{bean.onPaging}"
update=":outform:buttonOut buttonIn" />
<p:ajax event="filter" listener="#{bean.onFilter}"
update=":outform:buttonOut buttonIn" />
<p:ajax event="sort" listener="#{bean.onSort}"
update=":outform:buttonOut buttonIn" />
<p:column headerText="id" sortBy="#{person.id}"
filterBy="#{person.id}">
#{person.id}
</p:column>
<p:column headerText="name" sortBy="#{person.name}"
filterBy="#{person.name}">
#{person.name}
</p:column>
<f:facet name="footer">
<p:commandButton id="buttonIn" value="ButtonIn"
disabled="#{!bean.visible}" />
</f:facet>
</p:dataTable>
</h:form>
<h:form id="outform">
<p:commandButton id="buttonOut" value="ButtonOut" disabled="#{!bean.visible}" />
</h:form>
豆子:
@ManagedBean
@ViewScoped
public class Bean {
private List<Person> personList;
private boolean visible = true;
@PostConstruct
public void init(){
personList = new ArrayList<Person>();
for(int i = 0 ; i < 100 ; i++){
personList.add(new Person(i, "Person" +i));
}
}
public void onPaging(PageEvent event){
visible = false;
}
public void onSort(SortEvent event){
visible = false;
}
public void onFilter(FilterEvent event){
visible = false;
}
public boolean isVisible() {
return visible;
}
public void setVisible(boolean visible) {
this.visible = visible;
}
public List<Person> getPersonList() {
return personList;
}
public void setPersonList(List<Person> personList) {
this.personList = personList;
}
}
【问题讨论】:
标签: ajax jsf primefaces datatable