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
Ashley DoeJapanAnna Fali NEGOTIATION
Antonio CaudyFranceIvan Magalhaes PROPOSAL
Clifford RimRussiaStephen Shaw UNQUALIFIED
Murillo MaletGermanyOnyama Limba PROPOSAL
Ricardo GauchoGermanyOnyama Limba UNQUALIFIED
Octavia MaletCanadaStephen Shaw UNQUALIFIED
Tony FollerFranceBernardo Dominic NEGOTIATION
Darci PoquetteItalyAmy Elsner QUALIFIED
Jefferson SchemmerBrazilAnna Fali NEW
Claire TollnerBrazilElwin Sharvill QUALIFIED
Johnson SergiBrazilBernardo Dominic UNQUALIFIED
Cody SaylorsUnited KingdomIvan Magalhaes QUALIFIED
Nicolas IturbideUnited KingdomElwin Sharvill NEGOTIATION
Johnson SergiRussiaIoni Bowcher NEW
Kadeem FlosiAustraliaBernardo Dominic NEW
Johnson SergiUnited KingdomBernardo Dominic UNQUALIFIED
Cody SaylorsSpainBernardo Dominic NEGOTIATION
Mayumi KolmetzAustraliaElwin Sharvill QUALIFIED
Isabel BowleyIndiaElwin Sharvill NEGOTIATION
Aditya KuskoCanadaAmy Elsner NEW
Munro FerenczBrazilAmy Elsner PROPOSAL
Misaki RoysterAustraliaXuxue Feng RENEWAL
Mayumi KolmetzJapanXuxue Feng PROPOSAL
Salvatore StockhamBrazilXuxue Feng NEGOTIATION
Maria MarrierAustraliaIoni Bowcher NEW
Kaitlin OstroskyItalyStephen Shaw NEGOTIATION
Costa DilliardJapanAsiya Javayant QUALIFIED
Chavez BriddickGermanyIoni Bowcher NEW
Leja CaldareraRussiaOnyama Limba UNQUALIFIED
Adams MorascaIndiaIvan Magalhaes PROPOSAL
Arvin AlbaresAustraliaIoni Bowcher PROPOSAL
Johnson SergiGermanyAsiya Javayant QUALIFIED
Francesco ShinkoCanadaAsiya Javayant NEW
Antonio CaudyCanadaElwin Sharvill NEW
Aruna FigeroaCanadaAnna Fali PROPOSAL
Wickens NestleItalyOnyama Limba NEGOTIATION
Salvatore StockhamIndiaXuxue Feng RENEWAL
Chavez BriddickAustraliaIvan Magalhaes QUALIFIED
Silvio SlusarskiAustraliaXuxue Feng PROPOSAL
Smith GlickBrazilOnyama Limba NEGOTIATION
Leon OldroydItalyAnna Fali NEW
Mujtaba NickaGermanyAsiya Javayant UNQUALIFIED
Greenwood BologniaSpainStephen Shaw QUALIFIED
Aika InouyeItalyXuxue Feng NEGOTIATION
Misaki RoysterJapanAmy Elsner RENEWAL
Smith GlickUnited KingdomAsiya Javayant NEGOTIATION
Greenwood BologniaJapanXuxue Feng RENEWAL
Costa DilliardCanadaAsiya Javayant RENEWAL
Jeanfrancois VenereGermanyBernardo Dominic QUALIFIED
Leon OldroydAustraliaBernardo Dominic QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ivar PaprockiGermanyAnna Fali QUALIFIED
James ButtCanadaStephen Shaw RENEWAL
Aditya KuskoCanadaXuxue Feng NEGOTIATION
Mayumi KolmetzGermanyIvan Magalhaes UNQUALIFIED
Adams MorascaUnited KingdomElwin Sharvill QUALIFIED
Johnson SergiFranceOnyama Limba QUALIFIED
Morrow RutaIndiaBernardo Dominic UNQUALIFIED
Jefferson SchemmerUnited KingdomAmy Elsner UNQUALIFIED
Jefferson SchemmerGermanyStephen Shaw QUALIFIED
Nicolas IturbideRussiaOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Juan WieserAustralia2026-05-19Dorl, James J Esq QUALIFIED63Anna Fali
1001Jeanfrancois VenereCanada2026-05-31Buckley Miller Wright NEGOTIATION60Bernardo Dominic
1002Tony FollerIndia2026-05-16Benton, John B Jr PROPOSAL26Asiya Javayant
1003Nicolas IturbideArgentina2026-05-24Buckley Miller Wright QUALIFIED10Onyama Limba
1004Kadeem FlosiUnited Kingdom2026-05-20Commercial Press RENEWAL50Amy Elsner
1005Arvin AlbaresRussia2026-05-14Benton, John B Jr UNQUALIFIED10Asiya Javayant
1006Deepesh ChuiUnited Kingdom2026-05-11Morlong Associates NEW14Anna Fali
1007Mayumi KolmetzIndia2026-05-07Rangoni Of Florence NEW78Onyama Limba
1008Aditya KuskoGermany2026-05-04Rousseaux, Michael Esq RENEWAL41Bernardo Dominic
1009Claire TollnerBrazil2026-05-14Dorl, James J Esq NEW38Onyama Limba
1010Aditya KuskoFrance2026-05-30Rousseaux, Michael Esq UNQUALIFIED83Anna Fali
1011Cody SaylorsArgentina2026-05-29Rangoni Of Florence RENEWAL10Elwin Sharvill
1012Maisha RulapaughArgentina2026-05-06Rangoni Of Florence PROPOSAL95Ivan Magalhaes
1013Jones VocelkaFrance2026-05-04Benton, John B Jr NEW49Onyama Limba
1014Adams MorascaFrance2026-05-31Chemel, James L Cpa UNQUALIFIED69Amy Elsner
1015Murillo MaletBrazil2026-05-18Commercial Press PROPOSAL75Amy Elsner
1016Nicolas IturbideIndia2026-05-25Morlong Associates NEGOTIATION33Anna Fali
1017Isabel BowleyRussia2026-05-06Printing Dimensions PROPOSAL78Asiya Javayant
1018Salvatore StockhamFrance2026-05-03Chemel, James L Cpa QUALIFIED27Stephen Shaw
1019Jennifer AmigonJapan2026-05-26King, Christopher A Esq RENEWAL15Elwin Sharvill
1020Maisha RulapaughJapan2026-05-13King, Christopher A Esq NEGOTIATION3Asiya Javayant
1021Chavez BriddickCanada2026-05-14Feiner Bros QUALIFIED27Stephen Shaw
1022Smith GlickUnited Kingdom2026-05-18Chanay, Jeffrey A Esq NEGOTIATION63Onyama Limba
1023Emily WhobreyItaly2026-05-10Dorl, James J Esq UNQUALIFIED25Bernardo Dominic
1024Darci PoquetteUnited Kingdom2026-05-05Buckley Miller Wright PROPOSAL16Anna Fali
1025Ashley DoeUnited Kingdom2026-05-17Dorl, James J Esq PROPOSAL89Elwin Sharvill
1026Stacey MacleadUnited Kingdom2026-05-22Buckley Miller Wright NEW58Ivan Magalhaes
1027Smith GlickFrance2026-05-29Morlong Associates QUALIFIED55Stephen Shaw
1028Costa DilliardRussia2026-05-04Printing Dimensions QUALIFIED62Onyama Limba
1029Rodrigues CampainUnited Kingdom2026-05-03Feiner Bros QUALIFIED45Amy Elsner
1030Wickens NestleCanada2026-05-11Buckley Miller Wright QUALIFIED48Onyama Limba
1031Kaitlin OstroskyIndia2026-05-25Benton, John B Jr NEGOTIATION59Anna Fali
1032Claire TollnerGermany2026-05-04Commercial Press NEGOTIATION43Asiya Javayant
1033Leja CaldareraGermany2026-05-14Chapman, Ross E Esq NEGOTIATION28Amy Elsner
1034Izzy GarufiRussia2026-05-13Rangoni Of Florence PROPOSAL33Bernardo Dominic
1035Claire TollnerBrazil2026-05-10Morlong Associates PROPOSAL94Stephen Shaw
1036Isabel BowleyCanada2026-05-12Feiner Bros NEW28Ivan Magalhaes
1037Ivar PaprockiSpain2026-05-03Chapman, Ross E Esq UNQUALIFIED55Onyama Limba
1038Ricardo GauchoAustralia2026-05-11Rousseaux, Michael Esq NEGOTIATION98Ioni Bowcher
1039Salvatore StockhamBrazil2026-05-08Truhlar And Truhlar Attys QUALIFIED70Amy Elsner
1040Chavez BriddickCanada2026-05-06Chapman, Ross E Esq RENEWAL46Amy Elsner
1041Leon OldroydGermany2026-05-05Chapman, Ross E Esq NEW97Ioni Bowcher
1042Ivar PaprockiCanada2026-05-22Morlong Associates NEGOTIATION40Ioni Bowcher
1043Silvio SlusarskiIndia2026-05-20Truhlar And Truhlar Attys PROPOSAL78Amy Elsner
1044Munro FerenczRussia2026-05-16Printing Dimensions PROPOSAL37Xuxue Feng
1045Aika InouyeJapan2026-05-25Buckley Miller Wright RENEWAL17Bernardo Dominic
1046Rodrigues CampainArgentina2026-05-06Truhlar And Truhlar Attys UNQUALIFIED23Anna Fali
1047Aditya KuskoCanada2026-05-07Dorl, James J Esq PROPOSAL85Onyama Limba
1048Tony FollerSpain2026-05-24Morlong Associates RENEWAL81Elwin Sharvill
1049Ivar PaprockiBrazil2026-05-07Rangoni Of Florence UNQUALIFIED47Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Jeanfrancois VenereAustraliaBernardo Dominic NEW
Emily WhobreyArgentinaAmy Elsner PROPOSAL
Jefferson SchemmerArgentinaOnyama Limba NEGOTIATION
Antonio CaudyItalyAnna Fali NEW
Salvatore StockhamRussiaAnna Fali QUALIFIED
Costa DilliardRussiaStephen Shaw NEGOTIATION
Silvio SlusarskiGermanyStephen Shaw NEGOTIATION
Maria MarrierJapanBernardo Dominic QUALIFIED
Izzy GarufiItalyXuxue Feng NEGOTIATION
Octavia MaletCanadaOnyama Limba PROPOSAL
Octavia MaletSpainElwin Sharvill PROPOSAL
Kaitlin OstroskyAustraliaElwin Sharvill NEGOTIATION
Ashley DoeRussiaOnyama Limba QUALIFIED
Maisha RulapaughGermanyBernardo Dominic NEGOTIATION
Leja CaldareraIndiaIvan Magalhaes NEW
Rodrigues CampainAustraliaStephen Shaw PROPOSAL
Faith GillianAustraliaAmy Elsner RENEWAL
Greenwood BologniaItalyOnyama Limba NEGOTIATION
Salvatore StockhamJapanBernardo Dominic RENEWAL
Smith GlickCanadaXuxue Feng QUALIFIED
David DarakjyFranceAnna Fali NEGOTIATION
Kaitlin OstroskyFranceIvan Magalhaes UNQUALIFIED
David DarakjyFranceIvan Magalhaes PROPOSAL
Aruna FigeroaArgentinaAnna Fali UNQUALIFIED
Nicolas IturbideArgentinaStephen Shaw UNQUALIFIED
Emily WhobreyAustraliaElwin Sharvill RENEWAL
Cody SaylorsCanadaXuxue Feng QUALIFIED
Arvin AlbaresUnited KingdomIoni Bowcher RENEWAL
Maria MarrierBrazilBernardo Dominic PROPOSAL
Tony FollerSpainStephen Shaw PROPOSAL
Izzy GarufiCanadaIoni Bowcher RENEWAL
Jeanfrancois VenereSpainAmy Elsner NEW
Leja CaldareraBrazilIvan Magalhaes NEGOTIATION
Kadeem FlosiUnited KingdomXuxue Feng UNQUALIFIED
Izzy GarufiGermanyStephen Shaw PROPOSAL
Kaitlin OstroskyCanadaStephen Shaw UNQUALIFIED
Emily WhobreySpainAsiya Javayant QUALIFIED
Nicolas IturbideRussiaElwin Sharvill PROPOSAL
Aruna FigeroaCanadaStephen Shaw PROPOSAL
Costa DilliardRussiaStephen Shaw QUALIFIED
Ashley DoeArgentinaAmy Elsner NEW
Tony FollerFranceElwin Sharvill QUALIFIED
Jones VocelkaSpainXuxue Feng UNQUALIFIED
Antonio CaudyIndiaAmy Elsner QUALIFIED
Francesco ShinkoJapanIvan Magalhaes NEW
Ashley DoeJapanXuxue Feng UNQUALIFIED
Aditya KuskoGermanyStephen Shaw PROPOSAL
Julie StensethIndiaAmy Elsner UNQUALIFIED
Juan WieserFranceIoni Bowcher RENEWAL
Octavia MaletCanadaOnyama Limba RENEWAL
Frozen Columns
Name
Mayumi Kolmetz
Ricardo Gaucho
Adams Morasca
Murillo Malet
Misaki Royster
Aditya Kusko
Ashley Doe
Izzy Garufi
Ivar Paprocki
Jeanfrancois Venere
Salvatore Stockham
Munro Ferencz
Munro Ferencz
Smith Glick
Izzy Garufi
Francesco Shinko
Adams Morasca
Izzy Garufi
Greenwood Bolognia
Smith Glick
Mayumi Kolmetz
Stacey Maclead
Francesco Shinko
Maria Marrier
Mayumi Kolmetz
Juan Wieser
Greenwood Bolognia
Arvin Albares
Jones Vocelka
Jennifer Amigon
Francesco Shinko
Aditya Kusko
Octavia Malet
Salvatore Stockham
Leja Caldarera
Leja Caldarera
Aditya Kusko
Munro Ferencz
Octavia Malet
Jeanfrancois Venere
Arvin Albares
Aruna Figeroa
Ashley Doe
Juan Wieser
David Darakjy
Ashley Doe
Claire Tollner
Wickens Nestle
Francesco Shinko
Emily Whobrey
IdCountryDate
1000Germany2026-05-27
1001Argentina2026-05-08
1002Germany2026-05-27
1003Australia2026-05-14
1004Canada2026-05-17
1005India2026-06-01
1006France2026-05-30
1007Canada2026-05-22
1008United Kingdom2026-05-25
1009Canada2026-05-12
1010Germany2026-05-24
1011Argentina2026-05-29
1012Brazil2026-05-30
1013India2026-05-31
1014France2026-05-09
1015India2026-05-18
1016Brazil2026-05-07
1017Germany2026-05-11
1018Australia2026-05-09
1019United Kingdom2026-05-23
1020Brazil2026-05-15
1021India2026-05-16
1022Argentina2026-05-20
1023Australia2026-05-19
1024Spain2026-05-14
1025Russia2026-05-14
1026United Kingdom2026-05-28
1027Brazil2026-06-01
1028India2026-05-18
1029France2026-05-17
1030Italy2026-05-29
1031Germany2026-05-27
1032France2026-05-14
1033Russia2026-05-20
1034Brazil2026-05-23
1035France2026-05-10
1036France2026-05-22
1037France2026-05-27
1038France2026-05-21
1039Japan2026-05-04
1040Spain2026-05-25
1041Spain2026-05-10
1042Italy2026-05-29
1043Australia2026-05-10
1044India2026-05-11
1045Spain2026-05-24
1046Spain2026-05-22
1047Germany2026-05-08
1048France2026-05-13
1049Germany2026-05-14

On-Demand Data

NameIdCountryDate
Stacey Maclead1000Brazil2026-05-25
Ricardo Gaucho1001Italy2026-05-10
Munro Ferencz1002Spain2026-05-24
Julie Stenseth1003Brazil2026-05-08
Silvio Slusarski1004Japan2026-05-22
Aika Inouye1005Japan2026-05-24
Munro Ferencz1006Argentina2026-05-22
Juan Wieser1007Germany2026-05-29
Smith Glick1008Australia2026-05-06
Juan Wieser1009Russia2026-05-30
Leja Caldarera1010United Kingdom2026-05-06
Maria Marrier1011Russia2026-05-23
Rodrigues Campain1012India2026-06-01
Mujtaba Nicka1013Brazil2026-05-10
Sinclair Waycott1014Italy2026-05-15
Ashley Doe1015Japan2026-05-30
Costa Dilliard1016Australia2026-05-26
Claire Tollner1017Canada2026-05-23
Chavez Briddick1018India2026-05-07
Rodrigues Campain1019Australia2026-05-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily WhobreySpainAsiya Javayant NEGOTIATION
Wickens NestleGermanyAsiya Javayant QUALIFIED
Aika InouyeBrazilAmy Elsner PROPOSAL
Nicolas IturbideCanadaOnyama Limba NEW
Cody SaylorsItalyIoni Bowcher UNQUALIFIED
Claire TollnerAustraliaAnna Fali NEGOTIATION
Kadeem FlosiGermanyIoni Bowcher NEGOTIATION
Antonio CaudyJapanAsiya Javayant NEGOTIATION
Greenwood BologniaJapanBernardo Dominic QUALIFIED
Leon OldroydItalyStephen Shaw RENEWAL
Darci PoquetteJapanStephen Shaw RENEWAL
Jennifer AmigonRussiaOnyama Limba NEW
Arvin AlbaresRussiaAnna Fali NEGOTIATION
Arvin AlbaresGermanyIvan Magalhaes RENEWAL
Sinclair WaycottAustraliaStephen Shaw RENEWAL
Silvio SlusarskiGermanyStephen Shaw NEGOTIATION
James ButtRussiaOnyama Limba UNQUALIFIED
Aruna FigeroaItalyAsiya Javayant PROPOSAL
Mayumi KolmetzAustraliaXuxue Feng NEW
David DarakjyAustraliaStephen Shaw QUALIFIED
Kadeem FlosiCanadaXuxue Feng NEGOTIATION
David DarakjySpainElwin Sharvill RENEWAL
Francesco ShinkoAustraliaXuxue Feng UNQUALIFIED
Wickens NestleUnited KingdomBernardo Dominic RENEWAL
Salvatore StockhamFranceElwin Sharvill NEGOTIATION
Cody SaylorsBrazilAnna Fali UNQUALIFIED
Jeanfrancois VenereArgentinaStephen Shaw NEGOTIATION
James ButtArgentinaXuxue Feng RENEWAL
David DarakjyBrazilIvan Magalhaes PROPOSAL
Nicolas IturbideFranceOnyama Limba QUALIFIED
Ricardo GauchoCanadaAsiya Javayant RENEWAL
Nicolas IturbideJapanIoni Bowcher NEGOTIATION
Arvin AlbaresRussiaStephen Shaw NEGOTIATION
Clifford RimSpainIoni Bowcher QUALIFIED
Aika InouyeRussiaAnna Fali NEGOTIATION
Jeanfrancois VenereArgentinaOnyama Limba NEGOTIATION
Johnson SergiGermanyXuxue Feng NEGOTIATION
Murillo MaletUnited KingdomIvan Magalhaes RENEWAL
Mayumi KolmetzRussiaOnyama Limba RENEWAL
Ricardo GauchoUnited KingdomElwin Sharvill PROPOSAL

<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>