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
Stacey MacleadGermanyAnna Fali PROPOSAL
Kadeem FlosiUnited KingdomOnyama Limba QUALIFIED
Deepesh ChuiJapanXuxue Feng NEW
Mayumi KolmetzIndiaXuxue Feng NEW
Claire TollnerCanadaIoni Bowcher NEGOTIATION
Juan WieserAustraliaAnna Fali NEW
Arvin AlbaresUnited KingdomOnyama Limba UNQUALIFIED
Sinclair WaycottCanadaBernardo Dominic NEW
Maisha RulapaughBrazilElwin Sharvill UNQUALIFIED
Aika InouyeUnited KingdomAnna Fali UNQUALIFIED
Misaki RoysterJapanIoni Bowcher UNQUALIFIED
Emily WhobreyFranceBernardo Dominic RENEWAL
Ivar PaprockiIndiaBernardo Dominic RENEWAL
Greenwood BologniaUnited KingdomAnna Fali QUALIFIED
Octavia MaletIndiaXuxue Feng NEW
Francesco ShinkoCanadaElwin Sharvill QUALIFIED
Antonio CaudyFranceElwin Sharvill QUALIFIED
Smith GlickGermanyBernardo Dominic RENEWAL
Adams MorascaRussiaOnyama Limba NEGOTIATION
Adams MorascaBrazilAnna Fali UNQUALIFIED
Ivar PaprockiJapanOnyama Limba PROPOSAL
Costa DilliardUnited KingdomElwin Sharvill RENEWAL
Octavia MaletBrazilAmy Elsner RENEWAL
Silvio SlusarskiItalyElwin Sharvill NEW
Cody SaylorsFranceXuxue Feng NEW
Antonio CaudyRussiaXuxue Feng PROPOSAL
Darci PoquetteItalyStephen Shaw NEGOTIATION
Isabel BowleyRussiaAnna Fali PROPOSAL
Ricardo GauchoGermanyElwin Sharvill PROPOSAL
Aditya KuskoArgentinaStephen Shaw NEW
Juan WieserItalyElwin Sharvill NEGOTIATION
Julie StensethUnited KingdomIoni Bowcher QUALIFIED
Cody SaylorsCanadaIvan Magalhaes QUALIFIED
Juan WieserArgentinaOnyama Limba QUALIFIED
Stacey MacleadBrazilXuxue Feng RENEWAL
Juan WieserArgentinaIoni Bowcher NEGOTIATION
Leon OldroydIndiaStephen Shaw QUALIFIED
Emily WhobreyRussiaStephen Shaw UNQUALIFIED
Wickens NestleAustraliaXuxue Feng PROPOSAL
Mujtaba NickaAustraliaOnyama Limba NEGOTIATION
Morrow RutaAustraliaXuxue Feng UNQUALIFIED
Octavia MaletJapanOnyama Limba NEW
Maisha RulapaughGermanyBernardo Dominic QUALIFIED
Stacey MacleadItalyAsiya Javayant NEGOTIATION
Misaki RoysterIndiaAnna Fali QUALIFIED
Antonio CaudyRussiaXuxue Feng NEGOTIATION
Claire TollnerSpainAmy Elsner NEW
Alejandro PerinRussiaIoni Bowcher NEGOTIATION
Kaitlin OstroskyArgentinaXuxue Feng PROPOSAL
Kadeem FlosiAustraliaIoni Bowcher NEW
Horizontal
NameCountryRepresentativeStatus
Salvatore StockhamArgentinaAsiya Javayant UNQUALIFIED
Nicolas IturbideAustraliaStephen Shaw RENEWAL
Juan WieserSpainXuxue Feng NEGOTIATION
Ricardo GauchoJapanAmy Elsner UNQUALIFIED
Salvatore StockhamGermanyElwin Sharvill RENEWAL
Salvatore StockhamGermanyElwin Sharvill RENEWAL
Alejandro PerinFranceAsiya Javayant RENEWAL
David DarakjyCanadaAmy Elsner PROPOSAL
Jeanfrancois VenereGermanyBernardo Dominic QUALIFIED
Deepesh ChuiBrazilIoni Bowcher RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas IturbideRussia2026-04-14Rousseaux, Michael Esq NEGOTIATION30Asiya Javayant
1001Leja CaldareraSpain2026-03-28Printing Dimensions NEW56Xuxue Feng
1002Mujtaba NickaBrazil2026-03-28Dorl, James J Esq NEGOTIATION66Ioni Bowcher
1003Julie StensethFrance2026-04-11Buckley Miller Wright NEGOTIATION49Amy Elsner
1004Alejandro PerinAustralia2026-03-28Rousseaux, Michael Esq NEGOTIATION32Bernardo Dominic
1005Isabel BowleyJapan2026-03-29Dorl, James J Esq NEW87Onyama Limba
1006Kadeem FlosiIndia2026-04-10Feltz Printing Service NEW87Ioni Bowcher
1007Antonio CaudyItaly2026-04-20Chanay, Jeffrey A Esq NEGOTIATION96Bernardo Dominic
1008Johnson SergiUnited Kingdom2026-04-20Truhlar And Truhlar Attys UNQUALIFIED4Ioni Bowcher
1009Rodrigues CampainFrance2026-04-11Rangoni Of Florence NEGOTIATION29Stephen Shaw
1010Kadeem FlosiArgentina2026-04-01King, Christopher A Esq NEW13Bernardo Dominic
1011Smith GlickUnited Kingdom2026-04-10Chapman, Ross E Esq NEGOTIATION16Xuxue Feng
1012Antonio CaudyFrance2026-03-23Truhlar And Truhlar Attys NEGOTIATION93Ivan Magalhaes
1013Mujtaba NickaItaly2026-04-13Feiner Bros NEGOTIATION98Onyama Limba
1014Aruna FigeroaSpain2026-04-10Buckley Miller Wright PROPOSAL25Asiya Javayant
1015Murillo MaletUnited Kingdom2026-03-22Buckley Miller Wright UNQUALIFIED13Ioni Bowcher
1016Juan WieserCanada2026-03-22Feltz Printing Service NEW52Onyama Limba
1017Juan WieserSpain2026-04-20Rousseaux, Michael Esq QUALIFIED95Ivan Magalhaes
1018Adams MorascaJapan2026-04-16Chemel, James L Cpa UNQUALIFIED63Asiya Javayant
1019Jeanfrancois VenereSpain2026-03-23Feiner Bros NEGOTIATION0Ivan Magalhaes
1020Julie StensethRussia2026-03-27Chanay, Jeffrey A Esq PROPOSAL10Onyama Limba
1021Jones VocelkaArgentina2026-04-12Feltz Printing Service NEW83Bernardo Dominic
1022David DarakjySpain2026-04-11Dorl, James J Esq QUALIFIED32Ioni Bowcher
1023Leon OldroydJapan2026-04-16Dorl, James J Esq UNQUALIFIED2Ivan Magalhaes
1024Smith GlickCanada2026-03-23Feltz Printing Service NEW19Stephen Shaw
1025Tony FollerFrance2026-04-02Feltz Printing Service UNQUALIFIED38Onyama Limba
1026Isabel BowleyAustralia2026-04-03Commercial Press RENEWAL11Ivan Magalhaes
1027Julie StensethArgentina2026-03-22Benton, John B Jr NEGOTIATION33Ioni Bowcher
1028David DarakjyAustralia2026-03-28Chapman, Ross E Esq NEW89Ivan Magalhaes
1029Izzy GarufiGermany2026-03-30Benton, John B Jr QUALIFIED82Anna Fali
1030Alejandro PerinFrance2026-04-09Commercial Press QUALIFIED1Amy Elsner
1031Adams MorascaFrance2026-03-29Commercial Press NEW8Ioni Bowcher
1032Stacey MacleadUnited Kingdom2026-04-06Dorl, James J Esq RENEWAL94Amy Elsner
1033Alejandro PerinRussia2026-03-27Buckley Miller Wright PROPOSAL83Stephen Shaw
1034Jeanfrancois VenereItaly2026-03-29Feiner Bros QUALIFIED10Onyama Limba
1035Ashley DoeSpain2026-04-11Morlong Associates NEGOTIATION86Ivan Magalhaes
1036Emily WhobreySpain2026-04-10Chapman, Ross E Esq PROPOSAL77Xuxue Feng
1037Arvin AlbaresSpain2026-03-29Chapman, Ross E Esq NEW68Ioni Bowcher
1038Jennifer AmigonBrazil2026-04-06Truhlar And Truhlar Attys NEGOTIATION1Amy Elsner
1039Stacey MacleadIndia2026-03-24Truhlar And Truhlar Attys QUALIFIED59Amy Elsner
1040Morrow RutaIndia2026-04-02Chapman, Ross E Esq NEW18Amy Elsner
1041Aruna FigeroaJapan2026-03-23Morlong Associates NEGOTIATION93Xuxue Feng
1042Ricardo GauchoBrazil2026-03-24Dorl, James J Esq NEGOTIATION52Amy Elsner
1043Claire TollnerGermany2026-04-06Chemel, James L Cpa QUALIFIED11Ioni Bowcher
1044Jeanfrancois VenereCanada2026-03-29Commercial Press NEW80Anna Fali
1045Clifford RimRussia2026-03-29Printing Dimensions PROPOSAL28Asiya Javayant
1046Sinclair WaycottCanada2026-04-02Commercial Press QUALIFIED94Amy Elsner
1047Julie StensethItaly2026-03-24Chapman, Ross E Esq NEGOTIATION80Anna Fali
1048Kadeem FlosiUnited Kingdom2026-03-22Printing Dimensions UNQUALIFIED53Ioni Bowcher
1049Silvio SlusarskiAustralia2026-04-02Benton, John B Jr UNQUALIFIED25Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Jeanfrancois VenereArgentinaBernardo Dominic NEGOTIATION
Antonio CaudyArgentinaOnyama Limba QUALIFIED
Mayumi KolmetzJapanIvan Magalhaes NEW
Faith GillianGermanyElwin Sharvill RENEWAL
Salvatore StockhamFranceOnyama Limba RENEWAL
Izzy GarufiAustraliaAmy Elsner PROPOSAL
Ivar PaprockiIndiaElwin Sharvill QUALIFIED
Ivar PaprockiItalyStephen Shaw NEW
Costa DilliardGermanyIvan Magalhaes NEGOTIATION
Izzy GarufiFranceElwin Sharvill PROPOSAL
Claire TollnerBrazilIvan Magalhaes NEW
Emily WhobreyGermanyBernardo Dominic RENEWAL
Nicolas IturbideUnited KingdomOnyama Limba QUALIFIED
Smith GlickCanadaAmy Elsner UNQUALIFIED
Darci PoquetteFranceIoni Bowcher PROPOSAL
Octavia MaletFranceIoni Bowcher NEGOTIATION
Emily WhobreyItalyOnyama Limba PROPOSAL
Ricardo GauchoGermanyBernardo Dominic PROPOSAL
Arvin AlbaresArgentinaXuxue Feng NEGOTIATION
Izzy GarufiJapanIoni Bowcher UNQUALIFIED
Cody SaylorsJapanBernardo Dominic NEGOTIATION
Octavia MaletBrazilAmy Elsner QUALIFIED
Murillo MaletSpainIvan Magalhaes NEGOTIATION
Francesco ShinkoCanadaXuxue Feng PROPOSAL
Isabel BowleyItalyOnyama Limba UNQUALIFIED
Jefferson SchemmerFranceIvan Magalhaes QUALIFIED
Misaki RoysterAustraliaAsiya Javayant QUALIFIED
Misaki RoysterBrazilAmy Elsner NEGOTIATION
Clifford RimCanadaAmy Elsner NEW
Aika InouyeArgentinaXuxue Feng PROPOSAL
Ashley DoeUnited KingdomStephen Shaw QUALIFIED
Cody SaylorsItalyIvan Magalhaes NEGOTIATION
Costa DilliardAustraliaAsiya Javayant UNQUALIFIED
Julie StensethSpainStephen Shaw NEGOTIATION
Johnson SergiIndiaIvan Magalhaes NEW
Murillo MaletGermanyElwin Sharvill RENEWAL
Salvatore StockhamRussiaIoni Bowcher PROPOSAL
Ashley DoeAustraliaElwin Sharvill NEGOTIATION
Jefferson SchemmerArgentinaXuxue Feng NEGOTIATION
Stacey MacleadUnited KingdomAnna Fali QUALIFIED
Ashley DoeCanadaAmy Elsner UNQUALIFIED
Wickens NestleFranceIvan Magalhaes QUALIFIED
Adams MorascaArgentinaIvan Magalhaes UNQUALIFIED
Aika InouyeItalyBernardo Dominic PROPOSAL
Arvin AlbaresUnited KingdomIvan Magalhaes QUALIFIED
Tony FollerSpainElwin Sharvill PROPOSAL
Aditya KuskoJapanOnyama Limba NEGOTIATION
Arvin AlbaresArgentinaXuxue Feng NEW
Darci PoquetteUnited KingdomAnna Fali RENEWAL
Kaitlin OstroskyAustraliaOnyama Limba NEW
Frozen Columns
Name
Mayumi Kolmetz
Francesco Shinko
Aruna Figeroa
Murillo Malet
Jones Vocelka
Kadeem Flosi
Costa Dilliard
James Butt
Tony Foller
Leja Caldarera
Antonio Caudy
Jeanfrancois Venere
Stacey Maclead
Smith Glick
Adams Morasca
Jennifer Amigon
Alejandro Perin
Antonio Caudy
Alejandro Perin
Ashley Doe
Misaki Royster
Emily Whobrey
Chavez Briddick
Smith Glick
Claire Tollner
Chavez Briddick
Octavia Malet
Octavia Malet
Johnson Sergi
Octavia Malet
Emily Whobrey
Jeanfrancois Venere
Cody Saylors
Ivar Paprocki
Ashley Doe
Costa Dilliard
Julie Stenseth
Tony Foller
Alejandro Perin
Munro Ferencz
Ashley Doe
Jennifer Amigon
Jennifer Amigon
Ivar Paprocki
Kaitlin Ostrosky
Mayumi Kolmetz
Leja Caldarera
Octavia Malet
Johnson Sergi
Ricardo Gaucho
IdCountryDate
1000Brazil2026-03-31
1001Canada2026-04-16
1002France2026-03-28
1003Canada2026-04-10
1004Argentina2026-04-20
1005Brazil2026-03-31
1006United Kingdom2026-04-15
1007France2026-04-04
1008Argentina2026-04-15
1009France2026-04-05
1010United Kingdom2026-03-23
1011Russia2026-04-05
1012Germany2026-04-08
1013Japan2026-03-25
1014Argentina2026-04-20
1015Brazil2026-04-10
1016France2026-04-14
1017Japan2026-03-26
1018Australia2026-03-24
1019Canada2026-04-13
1020Argentina2026-04-13
1021Spain2026-04-04
1022Canada2026-04-10
1023India2026-04-11
1024Italy2026-04-13
1025Japan2026-04-14
1026France2026-04-10
1027Germany2026-04-13
1028Argentina2026-04-06
1029Japan2026-04-06
1030India2026-03-28
1031France2026-04-13
1032India2026-03-29
1033Brazil2026-04-03
1034Brazil2026-03-29
1035Russia2026-04-08
1036Germany2026-04-04
1037Spain2026-04-18
1038Spain2026-03-30
1039Germany2026-03-22
1040Canada2026-04-03
1041Japan2026-04-09
1042Spain2026-03-27
1043Canada2026-03-25
1044Italy2026-03-25
1045India2026-04-06
1046Canada2026-04-04
1047Canada2026-03-31
1048Brazil2026-04-03
1049Australia2026-04-12

On-Demand Data

NameIdCountryDate
Greenwood Bolognia1000Brazil2026-04-02
Wickens Nestle1001Russia2026-03-28
Nicolas Iturbide1002Australia2026-04-09
Maria Marrier1003Spain2026-04-04
Greenwood Bolognia1004Australia2026-04-05
Isabel Bowley1005Russia2026-04-19
Kaitlin Ostrosky1006Italy2026-04-02
Clifford Rim1007France2026-03-26
Jennifer Amigon1008United Kingdom2026-04-13
Aruna Figeroa1009India2026-03-25
Arvin Albares1010United Kingdom2026-04-05
Johnson Sergi1011Germany2026-04-11
Smith Glick1012Japan2026-03-22
Aruna Figeroa1013Argentina2026-04-19
Leon Oldroyd1014France2026-04-09
Adams Morasca1015Italy2026-04-04
Faith Gillian1016Germany2026-03-23
Arvin Albares1017United Kingdom2026-04-07
Claire Tollner1018Brazil2026-04-10
Darci Poquette1019United Kingdom2026-04-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ricardo GauchoCanadaBernardo Dominic PROPOSAL
Claire TollnerAustraliaStephen Shaw RENEWAL
Salvatore StockhamGermanyStephen Shaw UNQUALIFIED
Clifford RimUnited KingdomAnna Fali PROPOSAL
David DarakjyGermanyAmy Elsner PROPOSAL
Ricardo GauchoItalyOnyama Limba QUALIFIED
Juan WieserUnited KingdomStephen Shaw UNQUALIFIED
Aditya KuskoJapanIvan Magalhaes UNQUALIFIED
Kadeem FlosiJapanIvan Magalhaes RENEWAL
Maria MarrierAustraliaBernardo Dominic UNQUALIFIED
Claire TollnerBrazilStephen Shaw UNQUALIFIED
Nicolas IturbideArgentinaIvan Magalhaes NEW
Smith GlickGermanyIoni Bowcher NEW
Sinclair WaycottSpainOnyama Limba UNQUALIFIED
Adams MorascaAustraliaAsiya Javayant PROPOSAL
Munro FerenczItalyIvan Magalhaes RENEWAL
Stacey MacleadCanadaXuxue Feng QUALIFIED
Kadeem FlosiUnited KingdomAsiya Javayant QUALIFIED
Tony FollerAustraliaStephen Shaw PROPOSAL
Chavez BriddickArgentinaXuxue Feng QUALIFIED
Emily WhobreyUnited KingdomOnyama Limba QUALIFIED
Aika InouyeIndiaAmy Elsner NEW
Sinclair WaycottCanadaAnna Fali PROPOSAL
Kadeem FlosiItalyElwin Sharvill QUALIFIED
Deepesh ChuiBrazilStephen Shaw RENEWAL
Kaitlin OstroskyAustraliaOnyama Limba RENEWAL
Kadeem FlosiSpainOnyama Limba NEGOTIATION
Silvio SlusarskiRussiaIvan Magalhaes QUALIFIED
Adams MorascaIndiaXuxue Feng PROPOSAL
Maria MarrierBrazilIoni Bowcher NEW
Jefferson SchemmerIndiaOnyama Limba NEW
Rodrigues CampainAustraliaIvan Magalhaes QUALIFIED
Adams MorascaFranceBernardo Dominic RENEWAL
Maria MarrierArgentinaAsiya Javayant NEGOTIATION
James ButtBrazilIvan Magalhaes NEGOTIATION
Izzy GarufiItalyStephen Shaw NEW
Aditya KuskoArgentinaAsiya Javayant NEW
Silvio SlusarskiRussiaBernardo Dominic PROPOSAL
Octavia MaletCanadaStephen Shaw RENEWAL
Ricardo GauchoUnited KingdomXuxue Feng 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>