Locale

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Bangla
Bosnian
Czech
Greek
Estonian
Persian
Finnish
Danish
Hindi
Indonesian
Icelandic
Croatian
Japanese
Hungarian
Hebrew
Georgian
Central Kurdish
Khmer
Kyrgyz
Kazakh
Lithuanian
Latvian
Malay
Norwegian
Polish
Romanian
Russian
Slovak
Slovenian
Serbian
Serbian
Swedish
Thai
Turkish
Ukrainian
Uzbek
Vietnamese
Chinese
Chinese

Input Style

Free Themes

Built-in component themes created by the PrimeFaces Theme Designer.

Saga Saga
Vela Vela
Arya Arya

Legacy Free Themes

Luna Amber Luna Amber
Luna Blue Luna Blue
Luna Green Luna Green
Luna Pink Luna Pink
Nova Nova
Nova Nova Alt
Nova Nova Accent

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Maria MarrierAustraliaBernardo Dominic NEW
Francesco ShinkoArgentinaAmy Elsner RENEWAL
Ashley DoeGermanyStephen Shaw UNQUALIFIED
Ivar PaprockiBrazilXuxue Feng QUALIFIED
Jefferson SchemmerSpainAnna Fali QUALIFIED
Octavia MaletArgentinaAnna Fali UNQUALIFIED
Jones VocelkaRussiaAsiya Javayant NEGOTIATION
Tony FollerBrazilAnna Fali NEW
Johnson SergiCanadaIoni Bowcher RENEWAL
Maisha RulapaughJapanAsiya Javayant NEGOTIATION
Leon OldroydRussiaXuxue Feng NEW
Jennifer AmigonRussiaElwin Sharvill NEW
James ButtAustraliaAsiya Javayant UNQUALIFIED
Wickens NestleCanadaBernardo Dominic NEGOTIATION
Murillo MaletRussiaElwin Sharvill NEGOTIATION
Aditya KuskoBrazilAsiya Javayant PROPOSAL
Deepesh ChuiIndiaBernardo Dominic PROPOSAL
Costa DilliardFranceXuxue Feng NEGOTIATION
Kaitlin OstroskyRussiaElwin Sharvill NEGOTIATION
Nicolas IturbideGermanyAmy Elsner PROPOSAL
Murillo MaletRussiaElwin Sharvill QUALIFIED
Jennifer AmigonFranceAmy Elsner NEGOTIATION
Ashley DoeSpainXuxue Feng PROPOSAL
Salvatore StockhamGermanyIoni Bowcher QUALIFIED
Rodrigues CampainGermanyAsiya Javayant UNQUALIFIED
James ButtJapanOnyama Limba UNQUALIFIED
Isabel BowleyItalyAmy Elsner PROPOSAL
Wickens NestleIndiaAsiya Javayant QUALIFIED
David DarakjyCanadaIvan Magalhaes NEW
Ricardo GauchoSpainStephen Shaw QUALIFIED
Antonio CaudyGermanyElwin Sharvill NEGOTIATION
Juan WieserIndiaXuxue Feng RENEWAL
Claire TollnerFranceAnna Fali UNQUALIFIED
Julie StensethFranceBernardo Dominic NEW
Munro FerenczBrazilBernardo Dominic PROPOSAL
Murillo MaletArgentinaAnna Fali UNQUALIFIED
Mujtaba NickaSpainAnna Fali PROPOSAL
James ButtSpainAsiya Javayant UNQUALIFIED
Darci PoquetteAustraliaIvan Magalhaes RENEWAL
Maria MarrierArgentinaAnna Fali RENEWAL
Deepesh ChuiCanadaAmy Elsner QUALIFIED
Octavia MaletUnited KingdomStephen Shaw RENEWAL
Ivar PaprockiBrazilBernardo Dominic RENEWAL
Nicolas IturbideItalyBernardo Dominic QUALIFIED
Ricardo GauchoFranceBernardo Dominic QUALIFIED
Alejandro PerinAustraliaStephen Shaw NEGOTIATION
Ashley DoeAustraliaIvan Magalhaes PROPOSAL
Munro FerenczCanadaXuxue Feng NEW
Stacey MacleadFranceIvan Magalhaes RENEWAL
Kadeem FlosiIndiaStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Juan WieserUnited KingdomElwin Sharvill UNQUALIFIED
Francesco ShinkoRussiaXuxue Feng QUALIFIED
Chavez BriddickBrazilAnna Fali NEW
Kaitlin OstroskyRussiaAmy Elsner NEW
Jones VocelkaBrazilAsiya Javayant NEGOTIATION
Morrow RutaBrazilXuxue Feng NEGOTIATION
Sinclair WaycottIndiaAmy Elsner UNQUALIFIED
Silvio SlusarskiGermanyStephen Shaw RENEWAL
Isabel BowleyJapanStephen Shaw QUALIFIED
Sinclair WaycottArgentinaIvan Magalhaes RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kadeem FlosiJapan2026-04-27Feiner Bros UNQUALIFIED70Asiya Javayant
1001Stacey MacleadItaly2026-05-06King, Christopher A Esq PROPOSAL25Stephen Shaw
1002Kadeem FlosiIndia2026-05-05Rousseaux, Michael Esq NEW29Asiya Javayant
1003Jones VocelkaItaly2026-05-08Chapman, Ross E Esq NEW92Anna Fali
1004Mujtaba NickaJapan2026-05-11King, Christopher A Esq PROPOSAL55Asiya Javayant
1005Nicolas IturbideItaly2026-05-09Dorl, James J Esq NEW54Bernardo Dominic
1006Rodrigues CampainIndia2026-05-12Buckley Miller Wright NEW30Amy Elsner
1007Morrow RutaCanada2026-05-03Truhlar And Truhlar Attys UNQUALIFIED55Elwin Sharvill
1008Rodrigues CampainCanada2026-04-22Rousseaux, Michael Esq NEGOTIATION28Amy Elsner
1009Adams MorascaBrazil2026-04-21Printing Dimensions RENEWAL92Anna Fali
1010Greenwood BologniaGermany2026-04-16Rousseaux, Michael Esq QUALIFIED31Stephen Shaw
1011Salvatore StockhamCanada2026-04-16Feltz Printing Service PROPOSAL24Anna Fali
1012Mujtaba NickaJapan2026-04-17Rangoni Of Florence PROPOSAL24Ivan Magalhaes
1013Aditya KuskoSpain2026-05-15Rousseaux, Michael Esq UNQUALIFIED65Onyama Limba
1014Ashley DoeBrazil2026-05-10Morlong Associates NEGOTIATION51Elwin Sharvill
1015Aruna FigeroaAustralia2026-04-19Rousseaux, Michael Esq PROPOSAL91Ivan Magalhaes
1016Julie StensethCanada2026-04-25Dorl, James J Esq NEW76Amy Elsner
1017Costa DilliardCanada2026-04-24Rousseaux, Michael Esq QUALIFIED13Ioni Bowcher
1018Kaitlin OstroskyIndia2026-04-25Buckley Miller Wright PROPOSAL24Ivan Magalhaes
1019Alejandro PerinBrazil2026-04-17Morlong Associates NEW10Bernardo Dominic
1020Antonio CaudyArgentina2026-05-05Buckley Miller Wright NEGOTIATION89Bernardo Dominic
1021Faith GillianUnited Kingdom2026-05-14Morlong Associates NEGOTIATION6Ivan Magalhaes
1022Mayumi KolmetzCanada2026-05-01Printing Dimensions UNQUALIFIED83Ioni Bowcher
1023Darci PoquetteUnited Kingdom2026-04-17Chemel, James L Cpa QUALIFIED60Xuxue Feng
1024Smith GlickUnited Kingdom2026-04-21Chapman, Ross E Esq NEGOTIATION62Asiya Javayant
1025Isabel BowleyJapan2026-05-08Chemel, James L Cpa NEGOTIATION18Stephen Shaw
1026Munro FerenczFrance2026-05-08Chemel, James L Cpa NEW54Xuxue Feng
1027Leja CaldareraIndia2026-04-30King, Christopher A Esq PROPOSAL42Asiya Javayant
1028David DarakjyIndia2026-04-28Printing Dimensions QUALIFIED73Ivan Magalhaes
1029Alejandro PerinCanada2026-04-27Rousseaux, Michael Esq NEW97Anna Fali
1030Stacey MacleadRussia2026-04-18Benton, John B Jr NEW6Ioni Bowcher
1031Faith GillianCanada2026-05-15Chapman, Ross E Esq NEGOTIATION40Bernardo Dominic
1032Maisha RulapaughRussia2026-05-01Feltz Printing Service UNQUALIFIED29Ivan Magalhaes
1033Arvin AlbaresJapan2026-05-03Printing Dimensions RENEWAL57Asiya Javayant
1034Isabel BowleyGermany2026-05-15Chemel, James L Cpa QUALIFIED10Elwin Sharvill
1035Mayumi KolmetzArgentina2026-05-10Printing Dimensions QUALIFIED23Ioni Bowcher
1036Kadeem FlosiRussia2026-04-18Buckley Miller Wright NEGOTIATION97Stephen Shaw
1037Maria MarrierArgentina2026-05-06Feiner Bros NEGOTIATION38Ivan Magalhaes
1038Ricardo GauchoSpain2026-04-24Rangoni Of Florence PROPOSAL43Ioni Bowcher
1039Leja CaldareraFrance2026-05-09Morlong Associates NEW93Bernardo Dominic
1040Aditya KuskoCanada2026-04-28Printing Dimensions NEW54Ioni Bowcher
1041Murillo MaletRussia2026-04-19Buckley Miller Wright QUALIFIED35Asiya Javayant
1042Darci PoquetteJapan2026-05-10Rangoni Of Florence QUALIFIED58Ivan Magalhaes
1043Maisha RulapaughFrance2026-04-17Truhlar And Truhlar Attys RENEWAL73Amy Elsner
1044Antonio CaudyRussia2026-05-14Benton, John B Jr PROPOSAL27Stephen Shaw
1045Smith GlickUnited Kingdom2026-04-23Benton, John B Jr QUALIFIED36Anna Fali
1046Nicolas IturbideArgentina2026-05-06Chanay, Jeffrey A Esq QUALIFIED19Ioni Bowcher
1047Ricardo GauchoArgentina2026-05-12Printing Dimensions PROPOSAL49Asiya Javayant
1048Chavez BriddickIndia2026-04-26Benton, John B Jr UNQUALIFIED82Stephen Shaw
1049Mayumi KolmetzIndia2026-04-24Benton, John B Jr NEGOTIATION77Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserFranceAnna Fali NEGOTIATION
Leja CaldareraGermanyElwin Sharvill NEW
Arvin AlbaresItalyAmy Elsner QUALIFIED
Tony FollerIndiaAmy Elsner QUALIFIED
Julie StensethSpainIoni Bowcher UNQUALIFIED
Mayumi KolmetzFranceBernardo Dominic NEW
Deepesh ChuiBrazilXuxue Feng RENEWAL
Izzy GarufiFranceBernardo Dominic NEW
Sinclair WaycottFranceElwin Sharvill RENEWAL
Misaki RoysterBrazilAsiya Javayant QUALIFIED
Ricardo GauchoAustraliaOnyama Limba RENEWAL
Adams MorascaSpainIvan Magalhaes NEW
Jefferson SchemmerFranceElwin Sharvill PROPOSAL
Antonio CaudySpainAnna Fali RENEWAL
Octavia MaletIndiaBernardo Dominic UNQUALIFIED
Mujtaba NickaArgentinaStephen Shaw PROPOSAL
Cody SaylorsSpainIoni Bowcher PROPOSAL
Ivar PaprockiBrazilAnna Fali PROPOSAL
Costa DilliardUnited KingdomXuxue Feng QUALIFIED
Munro FerenczUnited KingdomAmy Elsner RENEWAL
Izzy GarufiFranceAsiya Javayant QUALIFIED
Jennifer AmigonJapanOnyama Limba QUALIFIED
Ashley DoeBrazilStephen Shaw PROPOSAL
Jones VocelkaArgentinaStephen Shaw NEGOTIATION
Darci PoquetteBrazilAnna Fali QUALIFIED
Jones VocelkaArgentinaAsiya Javayant QUALIFIED
Jeanfrancois VenereRussiaBernardo Dominic QUALIFIED
Adams MorascaArgentinaIoni Bowcher NEW
Izzy GarufiAustraliaOnyama Limba NEW
Morrow RutaUnited KingdomStephen Shaw UNQUALIFIED
Jeanfrancois VenereRussiaStephen Shaw PROPOSAL
Adams MorascaUnited KingdomOnyama Limba RENEWAL
Aditya KuskoGermanyAsiya Javayant PROPOSAL
Adams MorascaUnited KingdomBernardo Dominic NEGOTIATION
Aruna FigeroaUnited KingdomStephen Shaw PROPOSAL
Darci PoquetteRussiaElwin Sharvill PROPOSAL
Ashley DoeAustraliaOnyama Limba NEW
Alejandro PerinAustraliaAnna Fali RENEWAL
Mujtaba NickaCanadaIvan Magalhaes QUALIFIED
Kaitlin OstroskyAustraliaAmy Elsner NEGOTIATION
Aruna FigeroaAustraliaAnna Fali PROPOSAL
Ivar PaprockiUnited KingdomStephen Shaw QUALIFIED
Emily WhobreyGermanyBernardo Dominic NEW
Ricardo GauchoArgentinaStephen Shaw PROPOSAL
Misaki RoysterArgentinaAmy Elsner QUALIFIED
Arvin AlbaresUnited KingdomAsiya Javayant UNQUALIFIED
Mujtaba NickaIndiaIoni Bowcher QUALIFIED
Munro FerenczFranceIvan Magalhaes RENEWAL
Ashley DoeBrazilXuxue Feng PROPOSAL
Greenwood BologniaIndiaStephen Shaw RENEWAL
Frozen Columns
Name
Aditya Kusko
Jones Vocelka
Maisha Rulapaugh
Jeanfrancois Venere
Cody Saylors
Greenwood Bolognia
Adams Morasca
Misaki Royster
Ricardo Gaucho
Ricardo Gaucho
Aruna Figeroa
Jones Vocelka
Francesco Shinko
Salvatore Stockham
Ashley Doe
Wickens Nestle
Sinclair Waycott
Chavez Briddick
Wickens Nestle
Arvin Albares
Ricardo Gaucho
Alejandro Perin
Darci Poquette
Izzy Garufi
Misaki Royster
Jefferson Schemmer
Stacey Maclead
Jeanfrancois Venere
Juan Wieser
Maria Marrier
Adams Morasca
Stacey Maclead
Aruna Figeroa
Smith Glick
Francesco Shinko
Tony Foller
Jeanfrancois Venere
Julie Stenseth
Isabel Bowley
Misaki Royster
Jeanfrancois Venere
Mayumi Kolmetz
Greenwood Bolognia
Jones Vocelka
Salvatore Stockham
Jeanfrancois Venere
Jones Vocelka
Francesco Shinko
Aruna Figeroa
Juan Wieser
IdCountryDate
1000Canada2026-05-07
1001Australia2026-04-21
1002Russia2026-05-02
1003Japan2026-05-11
1004Argentina2026-04-25
1005Italy2026-05-02
1006Germany2026-04-22
1007United Kingdom2026-05-03
1008Spain2026-04-17
1009Brazil2026-04-29
1010Italy2026-04-24
1011Brazil2026-04-29
1012Italy2026-04-22
1013Japan2026-05-04
1014France2026-05-12
1015Germany2026-05-05
1016Japan2026-04-29
1017Japan2026-04-19
1018Argentina2026-05-13
1019Russia2026-04-28
1020France2026-04-17
1021Russia2026-05-06
1022Australia2026-04-24
1023France2026-04-22
1024Australia2026-05-04
1025Australia2026-04-21
1026United Kingdom2026-05-01
1027United Kingdom2026-04-20
1028Japan2026-05-15
1029United Kingdom2026-04-26
1030Germany2026-05-05
1031Germany2026-05-01
1032Italy2026-04-19
1033Spain2026-04-24
1034Spain2026-04-29
1035Russia2026-04-25
1036India2026-05-07
1037United Kingdom2026-04-29
1038India2026-04-23
1039France2026-05-08
1040Japan2026-04-24
1041Spain2026-05-15
1042Italy2026-04-25
1043Russia2026-04-27
1044Japan2026-05-08
1045Italy2026-04-28
1046Japan2026-04-20
1047Brazil2026-04-17
1048Australia2026-05-12
1049India2026-05-09

On-Demand Data

NameIdCountryDate
Juan Wieser1000Japan2026-05-04
Jefferson Schemmer1001Brazil2026-04-24
Julie Stenseth1002Canada2026-04-18
Jennifer Amigon1003Japan2026-04-18
Ivar Paprocki1004Brazil2026-04-17
Leon Oldroyd1005Argentina2026-04-23
Stacey Maclead1006Canada2026-04-23
Johnson Sergi1007Argentina2026-05-05
David Darakjy1008Brazil2026-05-10
Mayumi Kolmetz1009United Kingdom2026-05-04
Maisha Rulapaugh1010Russia2026-05-15
David Darakjy1011Argentina2026-05-14
Greenwood Bolognia1012Spain2026-05-12
Morrow Ruta1013Australia2026-05-03
Munro Ferencz1014Argentina2026-04-27
Kadeem Flosi1015Spain2026-05-02
Antonio Caudy1016Brazil2026-05-03
Greenwood Bolognia1017Russia2026-04-22
Chavez Briddick1018Canada2026-05-12
Johnson Sergi1019Germany2026-04-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ivar PaprockiSpainBernardo Dominic NEGOTIATION
Salvatore StockhamBrazilStephen Shaw NEGOTIATION
Greenwood BologniaAustraliaXuxue Feng RENEWAL
Smith GlickUnited KingdomIoni Bowcher NEGOTIATION
Leon OldroydSpainAmy Elsner UNQUALIFIED
Wickens NestleAustraliaAnna Fali PROPOSAL
Kaitlin OstroskyJapanAnna Fali PROPOSAL
Rodrigues CampainAustraliaStephen Shaw PROPOSAL
Darci PoquetteArgentinaBernardo Dominic RENEWAL
Francesco ShinkoFranceOnyama Limba NEGOTIATION
Rodrigues CampainIndiaElwin Sharvill NEW
Nicolas IturbideArgentinaOnyama Limba QUALIFIED
Mujtaba NickaBrazilOnyama Limba NEGOTIATION
Maisha RulapaughJapanAnna Fali NEGOTIATION
Jennifer AmigonItalyBernardo Dominic NEGOTIATION
Chavez BriddickItalyBernardo Dominic NEW
Silvio SlusarskiUnited KingdomAnna Fali NEW
James ButtAustraliaAnna Fali UNQUALIFIED
Misaki RoysterBrazilElwin Sharvill NEW
Sinclair WaycottItalyIvan Magalhaes NEW
Morrow RutaRussiaElwin Sharvill NEW
Wickens NestleBrazilBernardo Dominic PROPOSAL
Misaki RoysterFranceXuxue Feng QUALIFIED
Leon OldroydArgentinaStephen Shaw PROPOSAL
Antonio CaudyItalyElwin Sharvill UNQUALIFIED
Jeanfrancois VenereFranceElwin Sharvill RENEWAL
Leon OldroydItalyBernardo Dominic QUALIFIED
Faith GillianCanadaIvan Magalhaes RENEWAL
Smith GlickRussiaOnyama Limba UNQUALIFIED
Jones VocelkaArgentinaIoni Bowcher RENEWAL
Deepesh ChuiSpainAnna Fali NEGOTIATION
Misaki RoysterJapanAnna Fali NEW
Arvin AlbaresItalyBernardo Dominic NEGOTIATION
David DarakjyCanadaXuxue Feng NEGOTIATION
Octavia MaletItalyStephen Shaw NEW
Ivar PaprockiUnited KingdomBernardo Dominic NEW
David DarakjyRussiaAnna Fali UNQUALIFIED
Arvin AlbaresJapanIvan Magalhaes PROPOSAL
Jennifer AmigonSpainXuxue Feng NEW
Maisha RulapaughFranceStephen Shaw QUALIFIED

<style>
    .ui-datatable-frozenlayout-left {
        width: 20%;
    }

    .ui-datatable-frozenlayout-right {
        width: 80%;
    }
</style>


<h:form>
    <div class="card">
        <h5 style="margin-top:0">Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers1}" scrollable="true" scrollHeight="250">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers2}" scrollable="true" scrollWidth="600">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal and Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers3}" scrollable="true" scrollWidth="50%" scrollHeight="250">
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
            <p:column headerText="Company" footerText="Company">
                <h:outputText value="#{customer.company}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
            <p:column headerText="Activity" footerText="Activity">
                <h:outputText value="#{customer.activity}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers4}" scrollable="true" scrollHeight="250"
                     frozenRows="2">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Columns</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers5}" scrollable="true" scrollHeight="250"
                     scrollWidth="300" frozenColumns="1">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h3>On-Demand Data</h3>
        <p:dataTable var="customer" value="#{dtScrollView.customers6}" scrollRows="20" scrollable="true" liveScroll="true" scrollHeight="150">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Virtual Scrolling - 20000 Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.lazyModel}" scrollRows="20" scrollable="true"
                     virtualScroll="true" scrollHeight="200" rows="40" style="margin-bottom:0">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

</h:form>