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
Mujtaba NickaBrazilIvan Magalhaes QUALIFIED
Maria MarrierCanadaStephen Shaw PROPOSAL
Morrow RutaJapanAnna Fali NEGOTIATION
Leja CaldareraFranceAnna Fali QUALIFIED
Greenwood BologniaArgentinaAmy Elsner RENEWAL
Maisha RulapaughFranceOnyama Limba RENEWAL
Jeanfrancois VenereArgentinaBernardo Dominic NEGOTIATION
Francesco ShinkoUnited KingdomIoni Bowcher NEGOTIATION
Maria MarrierJapanElwin Sharvill PROPOSAL
David DarakjyFranceAmy Elsner PROPOSAL
Murillo MaletUnited KingdomIvan Magalhaes QUALIFIED
Jefferson SchemmerSpainElwin Sharvill RENEWAL
Chavez BriddickItalyIvan Magalhaes NEGOTIATION
Costa DilliardSpainElwin Sharvill NEGOTIATION
Tony FollerJapanElwin Sharvill QUALIFIED
Aika InouyeArgentinaAnna Fali QUALIFIED
Mayumi KolmetzIndiaBernardo Dominic QUALIFIED
Nicolas IturbideRussiaBernardo Dominic PROPOSAL
Jennifer AmigonArgentinaIvan Magalhaes PROPOSAL
Jennifer AmigonAustraliaIvan Magalhaes QUALIFIED
Arvin AlbaresCanadaStephen Shaw NEGOTIATION
Jefferson SchemmerFranceIoni Bowcher PROPOSAL
Julie StensethCanadaAmy Elsner PROPOSAL
Wickens NestleSpainAnna Fali NEW
Izzy GarufiArgentinaAmy Elsner UNQUALIFIED
Mujtaba NickaItalyXuxue Feng PROPOSAL
Maisha RulapaughIndiaIoni Bowcher PROPOSAL
Izzy GarufiUnited KingdomAmy Elsner PROPOSAL
Clifford RimArgentinaIoni Bowcher NEW
James ButtAustraliaOnyama Limba NEW
Sinclair WaycottAustraliaAsiya Javayant QUALIFIED
Julie StensethArgentinaBernardo Dominic UNQUALIFIED
Octavia MaletGermanyAmy Elsner QUALIFIED
Wickens NestleBrazilStephen Shaw UNQUALIFIED
Sinclair WaycottArgentinaOnyama Limba RENEWAL
Ivar PaprockiUnited KingdomAmy Elsner UNQUALIFIED
Munro FerenczUnited KingdomOnyama Limba PROPOSAL
Chavez BriddickGermanyOnyama Limba NEGOTIATION
Antonio CaudySpainXuxue Feng UNQUALIFIED
Silvio SlusarskiCanadaIoni Bowcher RENEWAL
Mayumi KolmetzArgentinaXuxue Feng UNQUALIFIED
Faith GillianGermanyAsiya Javayant UNQUALIFIED
Leja CaldareraCanadaXuxue Feng NEW
Wickens NestleRussiaOnyama Limba PROPOSAL
Juan WieserIndiaStephen Shaw QUALIFIED
Silvio SlusarskiSpainAnna Fali QUALIFIED
Munro FerenczJapanElwin Sharvill PROPOSAL
Silvio SlusarskiUnited KingdomOnyama Limba NEGOTIATION
Isabel BowleyFranceBernardo Dominic QUALIFIED
Johnson SergiGermanyStephen Shaw NEW
Horizontal
NameCountryRepresentativeStatus
Rodrigues CampainIndiaAmy Elsner QUALIFIED
Jennifer AmigonItalyBernardo Dominic QUALIFIED
Kadeem FlosiGermanyIoni Bowcher UNQUALIFIED
Faith GillianSpainStephen Shaw RENEWAL
Greenwood BologniaIndiaOnyama Limba UNQUALIFIED
Juan WieserSpainXuxue Feng QUALIFIED
Deepesh ChuiGermanyXuxue Feng PROPOSAL
Tony FollerAustraliaAnna Fali NEW
Johnson SergiItalyAmy Elsner UNQUALIFIED
Murillo MaletCanadaIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Adams MorascaUnited Kingdom2026-04-27Rousseaux, Michael Esq RENEWAL91Anna Fali
1001Aditya KuskoFrance2026-04-23Chemel, James L Cpa NEW92Bernardo Dominic
1002Mayumi KolmetzAustralia2026-04-27Chemel, James L Cpa NEGOTIATION4Amy Elsner
1003Leja CaldareraSpain2026-04-29Feiner Bros RENEWAL73Amy Elsner
1004Salvatore StockhamJapan2026-04-14Chemel, James L Cpa NEW24Xuxue Feng
1005Sinclair WaycottCanada2026-04-20Rangoni Of Florence PROPOSAL51Ioni Bowcher
1006Isabel BowleyGermany2026-04-25Chemel, James L Cpa RENEWAL64Ivan Magalhaes
1007Jones VocelkaFrance2026-05-10King, Christopher A Esq UNQUALIFIED11Xuxue Feng
1008Salvatore StockhamJapan2026-04-16King, Christopher A Esq QUALIFIED96Xuxue Feng
1009Misaki RoysterIndia2026-04-19Morlong Associates UNQUALIFIED95Amy Elsner
1010Jennifer AmigonUnited Kingdom2026-04-19Truhlar And Truhlar Attys QUALIFIED90Onyama Limba
1011Ivar PaprockiCanada2026-04-18Commercial Press PROPOSAL38Amy Elsner
1012James ButtRussia2026-05-05Chapman, Ross E Esq NEGOTIATION95Ivan Magalhaes
1013Alejandro PerinCanada2026-04-19Rousseaux, Michael Esq UNQUALIFIED24Anna Fali
1014Ricardo GauchoCanada2026-04-29Chapman, Ross E Esq RENEWAL99Asiya Javayant
1015Claire TollnerBrazil2026-04-24Buckley Miller Wright UNQUALIFIED54Bernardo Dominic
1016Maria MarrierCanada2026-04-11Printing Dimensions NEGOTIATION8Bernardo Dominic
1017Jones VocelkaGermany2026-04-30Chapman, Ross E Esq NEW50Stephen Shaw
1018Julie StensethFrance2026-04-14Feiner Bros RENEWAL77Onyama Limba
1019Antonio CaudyCanada2026-04-29Dorl, James J Esq UNQUALIFIED4Amy Elsner
1020Stacey MacleadGermany2026-04-16Rousseaux, Michael Esq RENEWAL15Elwin Sharvill
1021Darci PoquetteArgentina2026-04-16Chemel, James L Cpa PROPOSAL71Bernardo Dominic
1022Salvatore StockhamGermany2026-04-15Commercial Press UNQUALIFIED13Bernardo Dominic
1023Tony FollerFrance2026-04-26Truhlar And Truhlar Attys PROPOSAL7Onyama Limba
1024Jones VocelkaCanada2026-05-01Rousseaux, Michael Esq QUALIFIED36Amy Elsner
1025Ricardo GauchoItaly2026-05-04Rousseaux, Michael Esq PROPOSAL43Amy Elsner
1026Alejandro PerinRussia2026-04-26Chanay, Jeffrey A Esq NEGOTIATION51Xuxue Feng
1027Clifford RimArgentina2026-05-08Buckley Miller Wright NEGOTIATION45Elwin Sharvill
1028Clifford RimArgentina2026-05-06Chemel, James L Cpa PROPOSAL50Ioni Bowcher
1029Jeanfrancois VenereUnited Kingdom2026-04-11Buckley Miller Wright PROPOSAL42Ioni Bowcher
1030Tony FollerGermany2026-05-03Truhlar And Truhlar Attys QUALIFIED75Asiya Javayant
1031Greenwood BologniaItaly2026-04-30King, Christopher A Esq PROPOSAL60Elwin Sharvill
1032Isabel BowleyRussia2026-05-01Feltz Printing Service NEW62Ioni Bowcher
1033Darci PoquetteJapan2026-04-28Rousseaux, Michael Esq NEGOTIATION47Bernardo Dominic
1034Kadeem FlosiBrazil2026-04-26Rangoni Of Florence RENEWAL61Amy Elsner
1035Julie StensethSpain2026-05-03Morlong Associates NEGOTIATION99Amy Elsner
1036Greenwood BologniaGermany2026-05-02Buckley Miller Wright NEW48Onyama Limba
1037Jennifer AmigonGermany2026-04-26King, Christopher A Esq NEGOTIATION1Stephen Shaw
1038Leon OldroydArgentina2026-05-08Morlong Associates NEW76Elwin Sharvill
1039Leon OldroydJapan2026-04-18Dorl, James J Esq UNQUALIFIED10Onyama Limba
1040Misaki RoysterArgentina2026-04-15Benton, John B Jr NEGOTIATION57Bernardo Dominic
1041Leja CaldareraGermany2026-05-10Truhlar And Truhlar Attys QUALIFIED88Anna Fali
1042Maria MarrierBrazil2026-05-04Rangoni Of Florence QUALIFIED57Ioni Bowcher
1043Deepesh ChuiBrazil2026-05-02Truhlar And Truhlar Attys NEW58Amy Elsner
1044Claire TollnerGermany2026-04-22Printing Dimensions NEW33Asiya Javayant
1045Jones VocelkaFrance2026-04-16Feltz Printing Service NEW64Onyama Limba
1046Francesco ShinkoArgentina2026-05-07Morlong Associates RENEWAL47Stephen Shaw
1047Kadeem FlosiGermany2026-04-25Chanay, Jeffrey A Esq NEW37Stephen Shaw
1048David DarakjyAustralia2026-04-12Chemel, James L Cpa PROPOSAL44Onyama Limba
1049David DarakjyArgentina2026-04-29Dorl, James J Esq NEGOTIATION14Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Wickens NestleArgentinaIoni Bowcher UNQUALIFIED
Alejandro PerinCanadaIvan Magalhaes NEGOTIATION
Kadeem FlosiItalyElwin Sharvill RENEWAL
Sinclair WaycottBrazilIoni Bowcher NEGOTIATION
Arvin AlbaresGermanyBernardo Dominic NEW
Johnson SergiArgentinaAsiya Javayant QUALIFIED
Mayumi KolmetzGermanyBernardo Dominic RENEWAL
Greenwood BologniaGermanyIoni Bowcher NEW
Juan WieserGermanyOnyama Limba RENEWAL
Emily WhobreyItalyBernardo Dominic QUALIFIED
Juan WieserArgentinaAsiya Javayant QUALIFIED
Kadeem FlosiFranceIoni Bowcher QUALIFIED
Aruna FigeroaAustraliaIvan Magalhaes UNQUALIFIED
Silvio SlusarskiAustraliaXuxue Feng NEW
Aruna FigeroaGermanyXuxue Feng NEW
Murillo MaletBrazilElwin Sharvill UNQUALIFIED
Silvio SlusarskiBrazilOnyama Limba PROPOSAL
Sinclair WaycottArgentinaStephen Shaw PROPOSAL
Chavez BriddickGermanyAsiya Javayant UNQUALIFIED
Jones VocelkaArgentinaAsiya Javayant NEW
Aruna FigeroaGermanyElwin Sharvill QUALIFIED
Misaki RoysterJapanAmy Elsner PROPOSAL
Arvin AlbaresRussiaXuxue Feng NEGOTIATION
Izzy GarufiArgentinaStephen Shaw NEGOTIATION
Isabel BowleyFranceStephen Shaw RENEWAL
Munro FerenczAustraliaBernardo Dominic QUALIFIED
Leja CaldareraUnited KingdomAmy Elsner UNQUALIFIED
Jennifer AmigonFranceElwin Sharvill RENEWAL
Morrow RutaCanadaOnyama Limba RENEWAL
Deepesh ChuiArgentinaAsiya Javayant PROPOSAL
Emily WhobreyCanadaXuxue Feng RENEWAL
Kadeem FlosiItalyBernardo Dominic UNQUALIFIED
Jefferson SchemmerUnited KingdomAsiya Javayant NEW
Kaitlin OstroskySpainBernardo Dominic NEW
Leja CaldareraFranceElwin Sharvill NEW
Chavez BriddickJapanAmy Elsner UNQUALIFIED
Kaitlin OstroskyItalyElwin Sharvill RENEWAL
Greenwood BologniaIndiaBernardo Dominic PROPOSAL
Cody SaylorsRussiaAsiya Javayant QUALIFIED
Octavia MaletArgentinaAnna Fali PROPOSAL
Wickens NestleCanadaIvan Magalhaes NEW
Salvatore StockhamIndiaXuxue Feng PROPOSAL
Kaitlin OstroskyRussiaIvan Magalhaes NEW
Wickens NestleJapanBernardo Dominic UNQUALIFIED
Maisha RulapaughIndiaXuxue Feng PROPOSAL
Julie StensethArgentinaAmy Elsner UNQUALIFIED
Cody SaylorsIndiaXuxue Feng RENEWAL
Costa DilliardCanadaIoni Bowcher PROPOSAL
James ButtItalyBernardo Dominic RENEWAL
Chavez BriddickFranceStephen Shaw QUALIFIED
Frozen Columns
Name
Johnson Sergi
Claire Tollner
Aika Inouye
Claire Tollner
Stacey Maclead
David Darakjy
Smith Glick
Adams Morasca
Salvatore Stockham
Kadeem Flosi
Arvin Albares
Julie Stenseth
Misaki Royster
Greenwood Bolognia
Leon Oldroyd
Smith Glick
Stacey Maclead
Morrow Ruta
Maisha Rulapaugh
Octavia Malet
Aruna Figeroa
Sinclair Waycott
Izzy Garufi
Maria Marrier
Arvin Albares
Wickens Nestle
Faith Gillian
Leon Oldroyd
Costa Dilliard
Munro Ferencz
Jennifer Amigon
Francesco Shinko
Wickens Nestle
Nicolas Iturbide
Ivar Paprocki
Ashley Doe
Misaki Royster
Tony Foller
Darci Poquette
Tony Foller
Darci Poquette
Jones Vocelka
Octavia Malet
Jefferson Schemmer
Jones Vocelka
Salvatore Stockham
James Butt
Ricardo Gaucho
Mayumi Kolmetz
Antonio Caudy
IdCountryDate
1000United Kingdom2026-04-20
1001India2026-05-03
1002Italy2026-04-30
1003Brazil2026-04-27
1004Australia2026-04-16
1005Russia2026-04-16
1006Australia2026-04-24
1007United Kingdom2026-04-22
1008France2026-04-22
1009Germany2026-04-18
1010Spain2026-04-19
1011India2026-04-30
1012Spain2026-05-08
1013Russia2026-05-07
1014Australia2026-04-13
1015Japan2026-04-11
1016Spain2026-04-28
1017Germany2026-05-02
1018Spain2026-05-06
1019India2026-05-01
1020United Kingdom2026-05-08
1021India2026-04-19
1022Australia2026-05-01
1023Russia2026-05-05
1024India2026-05-09
1025Russia2026-04-11
1026Australia2026-05-02
1027India2026-04-13
1028France2026-04-25
1029Germany2026-04-29
1030Argentina2026-05-01
1031France2026-04-24
1032Spain2026-05-08
1033France2026-04-23
1034India2026-04-21
1035France2026-04-20
1036Italy2026-05-01
1037Australia2026-04-26
1038Italy2026-04-18
1039Brazil2026-04-29
1040Spain2026-05-02
1041United Kingdom2026-04-30
1042Russia2026-04-23
1043Argentina2026-05-06
1044Brazil2026-05-07
1045India2026-04-18
1046Italy2026-04-27
1047France2026-04-14
1048Russia2026-05-06
1049France2026-04-27

On-Demand Data

NameIdCountryDate
Ashley Doe1000United Kingdom2026-05-08
Sinclair Waycott1001India2026-04-18
Wickens Nestle1002Spain2026-04-30
Francesco Shinko1003Japan2026-05-09
Salvatore Stockham1004France2026-04-14
Clifford Rim1005Russia2026-05-06
Wickens Nestle1006Spain2026-04-19
Aika Inouye1007Brazil2026-04-29
Salvatore Stockham1008Australia2026-05-05
Claire Tollner1009Italy2026-04-26
Antonio Caudy1010Argentina2026-04-20
Jefferson Schemmer1011Japan2026-04-17
Chavez Briddick1012Spain2026-04-23
Jones Vocelka1013United Kingdom2026-04-23
Johnson Sergi1014India2026-04-28
Silvio Slusarski1015Canada2026-04-27
Francesco Shinko1016Argentina2026-05-05
Morrow Ruta1017France2026-05-08
Mayumi Kolmetz1018Japan2026-04-28
Greenwood Bolognia1019France2026-05-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kaitlin OstroskyIndiaStephen Shaw NEGOTIATION
Jefferson SchemmerIndiaAnna Fali PROPOSAL
Wickens NestleBrazilOnyama Limba PROPOSAL
Greenwood BologniaArgentinaXuxue Feng NEW
David DarakjyItalyAsiya Javayant QUALIFIED
Stacey MacleadAustraliaStephen Shaw UNQUALIFIED
Sinclair WaycottArgentinaXuxue Feng RENEWAL
Tony FollerUnited KingdomAnna Fali NEW
Emily WhobreyAustraliaAnna Fali QUALIFIED
Ricardo GauchoUnited KingdomAsiya Javayant PROPOSAL
Leon OldroydGermanyAnna Fali QUALIFIED
Kadeem FlosiGermanyAsiya Javayant UNQUALIFIED
David DarakjyIndiaIoni Bowcher NEW
Kaitlin OstroskyJapanIvan Magalhaes QUALIFIED
Mayumi KolmetzJapanAnna Fali PROPOSAL
James ButtUnited KingdomBernardo Dominic NEGOTIATION
David DarakjyItalyIvan Magalhaes NEGOTIATION
Ivar PaprockiUnited KingdomXuxue Feng RENEWAL
Silvio SlusarskiArgentinaAsiya Javayant UNQUALIFIED
Jones VocelkaIndiaAnna Fali RENEWAL
Aditya KuskoCanadaIoni Bowcher QUALIFIED
Sinclair WaycottJapanAsiya Javayant RENEWAL
Leon OldroydCanadaAsiya Javayant NEW
Wickens NestleIndiaIoni Bowcher NEGOTIATION
Tony FollerCanadaIoni Bowcher RENEWAL
Aika InouyeIndiaElwin Sharvill UNQUALIFIED
Mayumi KolmetzUnited KingdomIoni Bowcher UNQUALIFIED
Misaki RoysterIndiaIvan Magalhaes QUALIFIED
Munro FerenczJapanAsiya Javayant NEGOTIATION
Stacey MacleadIndiaStephen Shaw NEGOTIATION
Darci PoquetteBrazilIoni Bowcher NEW
Costa DilliardSpainIvan Magalhaes NEGOTIATION
Alejandro PerinUnited KingdomBernardo Dominic PROPOSAL
Wickens NestleIndiaIvan Magalhaes NEGOTIATION
Adams MorascaJapanIvan Magalhaes NEGOTIATION
Jones VocelkaAustraliaStephen Shaw UNQUALIFIED
Stacey MacleadIndiaElwin Sharvill QUALIFIED
Deepesh ChuiCanadaAnna Fali RENEWAL
Salvatore StockhamArgentinaXuxue Feng NEW
Maria MarrierIndiaIoni Bowcher 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>