У меня есть простой пример для моей проблемы. У меня есть datatable, и я хочу отключить кнопку в нижнем колонтитуле на сортировке, фильтрации или событии страницы. Я обновляю кнопку в нижнем колонтитуле, но ничего не меняется. Другая кнопка, в другой форме, отлично работает. Если я обновляю всю форму таблицы с помощью «@form», таблица будет уничтожена.Кнопка обновления в datatable после события
Я нашел решение с расширениями Primefaces pe: RemoteCommand (http://fractalsoft.net/primeext-showcase-mojarra/sections/remoteCommand/basicUsage.jsf) ... если я использую onComplete- Methodode Event и вызываю 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>
Bean:
@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;
}
}
да я знаю :) это было мое решение во втором проходе. Но почему я не могу обновить кнопку в foote от ajax-события напрямую? – pL4Gu33
Я нашел для него проблему с 2010 года ... я думаю, что та же проблема. Я думаю, что я использую решение с remoteCommand. Ссылка на вопрос: http://code.google.com/p/primefaces/issues/detail?id=1558 – pL4Gu33
Я попытаюсь воспроизвести по ночам, но я думаю, что есть что-то странное. –