JSF- datatable, tabela nie odświeża się automatycznie

JSF- datatable, tabela nie odświeża się automatycznie
0

Uczę się JSF i napotkałem na błąd w mojej aplikacji. Mam tabelę, z której chcę usuwać rekordy. Funkcja ta działa, jednak żeby zobaczyć efekt muszę odświeżyć stronę. Co zrobić aby strona odświeżała się automatycznie?

Kopiuj
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form id="form">
        <p:dataTable value="#{customerBean.customers}" var="customer" editable="true">
            
            <p:column headerText="Id">
                <h:outputText  value="#{customer.id}"/>
            </p:column>
            
            <p:column headerText="Imie">
                <h:outputText  value="#{customer.firstName}"/>
            </p:column>
            
            
            <p:column headerText="Nazwiko">
                <h:outputText  value="#{customer.lastName}"/>
            </p:column>
            
            
            <p:column headerText="tel">
                <h:outputText  value="#{customer.phoneNumber}"/>
            </p:column>
            
            
            <p:column headerText="data">
                <h:outputText  value="#{customer.date}"/>
            </p:column>
            
            
            <p:column headerText="komentarz">
                <h:outputText  value="#{customer.comment}"/>
            </p:column>
            
           <p:column headerText="del">
                 <p:selectBooleanCheckbox value="#{customer.selected}"/>
            </p:column>
           
            
        </p:dataTable>
             <p:commandButton value="delete" actionListener="#{customerBean.delete()}" update="form" />
            </h:form>
    </h:body>
</html>

 
D3X
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 8 lat
  • Postów:187
0

Próbowałeś dać id="tabelka" do datatable i w commandButton dać update="tabelka" ??

Tutaj jest podobny przykład tylko, że z menu kontekstowym.

http://www.primefaces.org/showcase/ui/data/datatable/contextMenu.xhtml

edytowany 1x, ostatnio: D3X
0

Niestety nie pomogło.
Mógłby mi ktoś wyjaśnić czym jest forma? Wydaje mi się, ze nie potrafię tego zrozumieć i w tym tkwi mój porblme

M9
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 6 lat
0

Masz literówkę napisałeś:

Kopiuj
<p:commandButton value="delete" actionListener="#{customerBean.delete()}" update="form" />

Powinno być:

Kopiuj
<p:commandButton value="delete" actionListener="#{customerBean.delete()}" update=":form" />

Jeśli nadasz datatble id będziesz mógł odświeżyć tylko część formularza wedug notacji :idFormularza:idTabelki (mniejszy request AJAX = lepsza wydajność).

Pozdrawiam,

edytowany 1x, ostatnio: margor90
D3X
W przykładach primefaces nie ma ":" i działa?
M9
Sprawdziłem, racja działa i bez tego w moim kodzie (przed chwilą przerobiłem). Bez znaczka na początku ':' jest czytelniej. Kiedyś nie działało, więc pewnie tak było w starszych wersjach. Z kolei korzystając z RequestContext w JSF Managed Bean, robiąc np. warunkowy update w zależności od tego co się dzieje w managed beanie zawsze używałem notacji 'idForm:idKontrolki'.
D3X
Nie no spoko. Dlatego się zastanawiałem czy nadal działało forumowiczowi a jeśli nie to co ma tam źle ;) Ale widzę chyba rozwiązał problem i zapomniał się podzielić.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.