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
Greenwood BologniaFranceElwin Sharvill UNQUALIFIED
Wickens NestleArgentinaAmy Elsner QUALIFIED
Isabel BowleyItalyAmy Elsner NEGOTIATION
Jefferson SchemmerGermanyXuxue Feng NEW
Maria MarrierJapanOnyama Limba QUALIFIED
Aditya KuskoIndiaAsiya Javayant PROPOSAL
Costa DilliardCanadaAmy Elsner QUALIFIED
David DarakjyCanadaIvan Magalhaes RENEWAL
Sinclair WaycottJapanAsiya Javayant NEGOTIATION
Adams MorascaArgentinaIvan Magalhaes PROPOSAL
Salvatore StockhamIndiaOnyama Limba NEW
Kadeem FlosiAustraliaBernardo Dominic NEW
Octavia MaletRussiaOnyama Limba NEGOTIATION
Ivar PaprockiJapanIoni Bowcher NEW
Clifford RimFranceXuxue Feng UNQUALIFIED
Jennifer AmigonGermanyAmy Elsner RENEWAL
Claire TollnerFranceIoni Bowcher QUALIFIED
Octavia MaletJapanXuxue Feng PROPOSAL
Ashley DoeArgentinaElwin Sharvill QUALIFIED
Jennifer AmigonAustraliaAmy Elsner QUALIFIED
Murillo MaletCanadaIoni Bowcher UNQUALIFIED
Cody SaylorsIndiaIoni Bowcher UNQUALIFIED
Deepesh ChuiRussiaOnyama Limba RENEWAL
Claire TollnerItalyAnna Fali QUALIFIED
Octavia MaletBrazilAnna Fali QUALIFIED
Costa DilliardSpainElwin Sharvill QUALIFIED
Greenwood BologniaGermanyStephen Shaw QUALIFIED
Munro FerenczUnited KingdomElwin Sharvill UNQUALIFIED
Mayumi KolmetzUnited KingdomStephen Shaw QUALIFIED
Leja CaldareraArgentinaAsiya Javayant QUALIFIED
Emily WhobreyAustraliaStephen Shaw UNQUALIFIED
Chavez BriddickItalyStephen Shaw UNQUALIFIED
Aruna FigeroaItalyIoni Bowcher UNQUALIFIED
Julie StensethSpainAmy Elsner PROPOSAL
Darci PoquetteCanadaBernardo Dominic UNQUALIFIED
Kadeem FlosiIndiaElwin Sharvill QUALIFIED
Ricardo GauchoCanadaIvan Magalhaes PROPOSAL
Maria MarrierBrazilIvan Magalhaes QUALIFIED
Adams MorascaFranceAsiya Javayant RENEWAL
Stacey MacleadCanadaXuxue Feng NEGOTIATION
Jones VocelkaCanadaBernardo Dominic UNQUALIFIED
Octavia MaletAustraliaIoni Bowcher NEW
Aika InouyeFranceAnna Fali RENEWAL
Maria MarrierIndiaOnyama Limba QUALIFIED
Alejandro PerinAustraliaXuxue Feng PROPOSAL
Munro FerenczJapanXuxue Feng NEGOTIATION
Isabel BowleySpainIvan Magalhaes RENEWAL
Sinclair WaycottBrazilAsiya Javayant PROPOSAL
Izzy GarufiRussiaAmy Elsner QUALIFIED
Isabel BowleyCanadaIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Claire TollnerIndiaIoni Bowcher UNQUALIFIED
Darci PoquetteCanadaIoni Bowcher PROPOSAL
Silvio SlusarskiJapanStephen Shaw QUALIFIED
Alejandro PerinFranceAnna Fali NEGOTIATION
Wickens NestleGermanyStephen Shaw RENEWAL
Aruna FigeroaUnited KingdomStephen Shaw NEW
Claire TollnerAustraliaAnna Fali NEGOTIATION
Munro FerenczUnited KingdomAsiya Javayant PROPOSAL
Murillo MaletSpainElwin Sharvill QUALIFIED
Stacey MacleadBrazilAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ricardo GauchoSpain2026-04-14Chapman, Ross E Esq UNQUALIFIED16Bernardo Dominic
1001Johnson SergiItaly2026-05-04Printing Dimensions QUALIFIED18Ioni Bowcher
1002Jefferson SchemmerRussia2026-04-23Truhlar And Truhlar Attys UNQUALIFIED35Ivan Magalhaes
1003Izzy GarufiSpain2026-05-01Dorl, James J Esq QUALIFIED70Bernardo Dominic
1004Izzy GarufiBrazil2026-05-04Feltz Printing Service RENEWAL95Xuxue Feng
1005Mayumi KolmetzCanada2026-05-08Chemel, James L Cpa UNQUALIFIED39Bernardo Dominic
1006Maisha RulapaughFrance2026-05-11Chemel, James L Cpa QUALIFIED74Elwin Sharvill
1007Juan WieserFrance2026-05-13Truhlar And Truhlar Attys NEGOTIATION57Xuxue Feng
1008Silvio SlusarskiJapan2026-05-01Buckley Miller Wright NEW87Ivan Magalhaes
1009Ashley DoeArgentina2026-04-17Feltz Printing Service PROPOSAL7Bernardo Dominic
1010Kaitlin OstroskyCanada2026-04-18Chanay, Jeffrey A Esq QUALIFIED70Onyama Limba
1011Deepesh ChuiGermany2026-04-21Feltz Printing Service NEW91Ivan Magalhaes
1012Tony FollerGermany2026-05-02Morlong Associates RENEWAL57Onyama Limba
1013Stacey MacleadArgentina2026-05-03Truhlar And Truhlar Attys UNQUALIFIED87Anna Fali
1014Ricardo GauchoIndia2026-05-03Morlong Associates UNQUALIFIED90Ivan Magalhaes
1015Jefferson SchemmerAustralia2026-05-01Printing Dimensions UNQUALIFIED72Amy Elsner
1016Antonio CaudyFrance2026-04-17Morlong Associates RENEWAL51Asiya Javayant
1017Octavia MaletCanada2026-05-11Chanay, Jeffrey A Esq UNQUALIFIED45Anna Fali
1018Francesco ShinkoRussia2026-04-28Feiner Bros QUALIFIED43Bernardo Dominic
1019Rodrigues CampainCanada2026-05-06Feiner Bros RENEWAL64Onyama Limba
1020Jeanfrancois VenereIndia2026-05-05Truhlar And Truhlar Attys PROPOSAL12Ivan Magalhaes
1021Johnson SergiFrance2026-04-21Buckley Miller Wright PROPOSAL63Bernardo Dominic
1022Smith GlickIndia2026-05-07Chemel, James L Cpa NEW38Stephen Shaw
1023Maisha RulapaughAustralia2026-04-22Chapman, Ross E Esq UNQUALIFIED38Ivan Magalhaes
1024Jeanfrancois VenereUnited Kingdom2026-04-19Morlong Associates PROPOSAL25Anna Fali
1025Clifford RimArgentina2026-05-07Printing Dimensions QUALIFIED50Elwin Sharvill
1026Julie StensethCanada2026-05-11Benton, John B Jr QUALIFIED38Asiya Javayant
1027Darci PoquetteUnited Kingdom2026-04-20Printing Dimensions UNQUALIFIED46Elwin Sharvill
1028Misaki RoysterGermany2026-04-26Buckley Miller Wright NEGOTIATION8Ivan Magalhaes
1029Darci PoquetteAustralia2026-04-27Dorl, James J Esq UNQUALIFIED40Onyama Limba
1030Morrow RutaRussia2026-04-23Rousseaux, Michael Esq RENEWAL50Ioni Bowcher
1031Julie StensethCanada2026-05-02Rangoni Of Florence QUALIFIED21Elwin Sharvill
1032Morrow RutaSpain2026-05-09Chanay, Jeffrey A Esq NEW49Amy Elsner
1033Arvin AlbaresGermany2026-05-02Rangoni Of Florence QUALIFIED22Amy Elsner
1034Emily WhobreyItaly2026-04-25Feltz Printing Service NEGOTIATION28Asiya Javayant
1035Mayumi KolmetzSpain2026-05-11Chapman, Ross E Esq NEW67Stephen Shaw
1036Octavia MaletIndia2026-05-03Feltz Printing Service RENEWAL42Ivan Magalhaes
1037Sinclair WaycottSpain2026-04-23Chanay, Jeffrey A Esq RENEWAL83Ivan Magalhaes
1038Juan WieserRussia2026-04-30Rousseaux, Michael Esq PROPOSAL37Ioni Bowcher
1039Cody SaylorsUnited Kingdom2026-04-16Printing Dimensions UNQUALIFIED32Ivan Magalhaes
1040Morrow RutaArgentina2026-04-18Chapman, Ross E Esq QUALIFIED28Ivan Magalhaes
1041Jones VocelkaAustralia2026-04-18Chanay, Jeffrey A Esq RENEWAL55Stephen Shaw
1042Francesco ShinkoAustralia2026-05-08Buckley Miller Wright NEGOTIATION48Asiya Javayant
1043Juan WieserJapan2026-05-02Feiner Bros UNQUALIFIED72Ivan Magalhaes
1044Mujtaba NickaBrazil2026-05-12Benton, John B Jr PROPOSAL71Xuxue Feng
1045Alejandro PerinFrance2026-05-13Chanay, Jeffrey A Esq NEW54Stephen Shaw
1046Cody SaylorsGermany2026-04-23Truhlar And Truhlar Attys QUALIFIED73Elwin Sharvill
1047Jennifer AmigonBrazil2026-05-05Chemel, James L Cpa NEGOTIATION0Elwin Sharvill
1048David DarakjyRussia2026-04-21Chemel, James L Cpa UNQUALIFIED4Xuxue Feng
1049Mayumi KolmetzFrance2026-05-10Chemel, James L Cpa NEW37Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba NickaCanadaBernardo Dominic RENEWAL
Johnson SergiIndiaAsiya Javayant NEW
Jefferson SchemmerFranceIoni Bowcher RENEWAL
Kaitlin OstroskyRussiaAnna Fali NEW
Stacey MacleadBrazilIvan Magalhaes PROPOSAL
Morrow RutaArgentinaElwin Sharvill NEGOTIATION
Misaki RoysterCanadaAmy Elsner NEGOTIATION
Silvio SlusarskiFranceElwin Sharvill RENEWAL
Darci PoquetteUnited KingdomIvan Magalhaes PROPOSAL
Isabel BowleyAustraliaBernardo Dominic QUALIFIED
Munro FerenczBrazilBernardo Dominic NEW
Greenwood BologniaIndiaXuxue Feng UNQUALIFIED
Leja CaldareraFranceAnna Fali QUALIFIED
Aika InouyeIndiaIvan Magalhaes PROPOSAL
Alejandro PerinSpainAsiya Javayant RENEWAL
Silvio SlusarskiSpainAnna Fali UNQUALIFIED
Ashley DoeIndiaIvan Magalhaes NEW
Costa DilliardIndiaElwin Sharvill QUALIFIED
Ricardo GauchoArgentinaXuxue Feng UNQUALIFIED
Misaki RoysterUnited KingdomXuxue Feng QUALIFIED
Cody SaylorsRussiaAnna Fali NEW
Faith GillianIndiaXuxue Feng PROPOSAL
Darci PoquetteIndiaIvan Magalhaes NEW
Leja CaldareraItalyAsiya Javayant QUALIFIED
Aruna FigeroaGermanyBernardo Dominic PROPOSAL
Munro FerenczSpainAmy Elsner NEW
Leon OldroydUnited KingdomAsiya Javayant UNQUALIFIED
Munro FerenczCanadaAnna Fali NEW
Jefferson SchemmerFranceXuxue Feng UNQUALIFIED
Morrow RutaIndiaIvan Magalhaes UNQUALIFIED
Costa DilliardFranceAsiya Javayant PROPOSAL
Aruna FigeroaGermanyIoni Bowcher PROPOSAL
Leon OldroydAustraliaElwin Sharvill PROPOSAL
Adams MorascaGermanyAnna Fali NEW
Wickens NestleCanadaAmy Elsner UNQUALIFIED
Cody SaylorsSpainIoni Bowcher RENEWAL
Adams MorascaAustraliaAnna Fali UNQUALIFIED
Jennifer AmigonJapanBernardo Dominic NEGOTIATION
Chavez BriddickUnited KingdomElwin Sharvill PROPOSAL
Ashley DoeArgentinaIoni Bowcher UNQUALIFIED
Silvio SlusarskiJapanStephen Shaw NEGOTIATION
Munro FerenczIndiaAsiya Javayant NEW
Aika InouyeArgentinaOnyama Limba RENEWAL
Claire TollnerRussiaIoni Bowcher NEW
Morrow RutaRussiaIvan Magalhaes RENEWAL
Julie StensethArgentinaStephen Shaw UNQUALIFIED
Munro FerenczUnited KingdomElwin Sharvill UNQUALIFIED
Arvin AlbaresGermanyStephen Shaw RENEWAL
Aditya KuskoSpainXuxue Feng RENEWAL
Mujtaba NickaAustraliaStephen Shaw RENEWAL
Frozen Columns
Name
Ashley Doe
Isabel Bowley
Greenwood Bolognia
Deepesh Chui
Claire Tollner
Isabel Bowley
Deepesh Chui
Costa Dilliard
Claire Tollner
Julie Stenseth
Sinclair Waycott
Greenwood Bolognia
Jefferson Schemmer
Silvio Slusarski
Ivar Paprocki
Octavia Malet
Kadeem Flosi
Cody Saylors
Claire Tollner
David Darakjy
Darci Poquette
Claire Tollner
Kadeem Flosi
Stacey Maclead
Isabel Bowley
Antonio Caudy
Tony Foller
Tony Foller
Kadeem Flosi
Faith Gillian
Jones Vocelka
Jeanfrancois Venere
Ricardo Gaucho
Misaki Royster
Morrow Ruta
Salvatore Stockham
Aika Inouye
Antonio Caudy
Wickens Nestle
Adams Morasca
James Butt
Isabel Bowley
Costa Dilliard
Faith Gillian
Kadeem Flosi
Darci Poquette
Aditya Kusko
Leja Caldarera
Sinclair Waycott
Clifford Rim
IdCountryDate
1000Japan2026-05-09
1001Japan2026-04-26
1002Spain2026-04-28
1003Italy2026-05-02
1004Brazil2026-04-23
1005France2026-04-29
1006Spain2026-05-01
1007India2026-04-30
1008Canada2026-04-17
1009Spain2026-05-04
1010Argentina2026-04-17
1011India2026-04-18
1012United Kingdom2026-04-18
1013India2026-04-21
1014Spain2026-05-13
1015Germany2026-05-02
1016Canada2026-04-21
1017Argentina2026-04-28
1018Germany2026-04-16
1019Brazil2026-05-08
1020Japan2026-04-19
1021Australia2026-05-03
1022Germany2026-05-12
1023Germany2026-04-24
1024France2026-04-17
1025Russia2026-04-20
1026Brazil2026-05-01
1027Argentina2026-05-07
1028India2026-04-30
1029Germany2026-04-15
1030Japan2026-04-23
1031Canada2026-04-23
1032Russia2026-05-01
1033Spain2026-05-07
1034Australia2026-04-20
1035Canada2026-04-26
1036India2026-04-27
1037Canada2026-05-04
1038Italy2026-04-29
1039India2026-05-06
1040Australia2026-04-15
1041Brazil2026-05-01
1042Australia2026-04-29
1043Japan2026-04-26
1044Australia2026-04-16
1045Argentina2026-04-29
1046Brazil2026-04-14
1047France2026-04-30
1048United Kingdom2026-04-27
1049Italy2026-05-08

On-Demand Data

NameIdCountryDate
Wickens Nestle1000Japan2026-05-13
Maria Marrier1001India2026-04-26
Ricardo Gaucho1002Germany2026-04-23
Ricardo Gaucho1003France2026-04-20
Silvio Slusarski1004Argentina2026-05-13
Claire Tollner1005Canada2026-05-12
Greenwood Bolognia1006Australia2026-04-26
Ashley Doe1007Japan2026-04-24
Francesco Shinko1008Spain2026-04-14
Arvin Albares1009Russia2026-04-14
Chavez Briddick1010India2026-05-12
Smith Glick1011Japan2026-05-03
Juan Wieser1012Germany2026-04-22
Jefferson Schemmer1013United Kingdom2026-05-10
Aditya Kusko1014Russia2026-05-13
Aruna Figeroa1015Japan2026-04-16
Adams Morasca1016Brazil2026-05-09
Francesco Shinko1017India2026-05-02
Ricardo Gaucho1018Japan2026-05-06
Mujtaba Nicka1019Italy2026-05-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ivar PaprockiIndiaIoni Bowcher UNQUALIFIED
Salvatore StockhamGermanyStephen Shaw NEGOTIATION
Isabel BowleyItalyBernardo Dominic NEW
Aika InouyeItalyBernardo Dominic PROPOSAL
Aika InouyeGermanyBernardo Dominic NEGOTIATION
Mayumi KolmetzCanadaOnyama Limba UNQUALIFIED
Julie StensethItalyElwin Sharvill NEGOTIATION
Sinclair WaycottArgentinaElwin Sharvill NEW
Ricardo GauchoBrazilOnyama Limba NEW
Claire TollnerUnited KingdomIvan Magalhaes RENEWAL
Alejandro PerinAustraliaBernardo Dominic PROPOSAL
Maisha RulapaughGermanyBernardo Dominic RENEWAL
Ashley DoeItalyAnna Fali PROPOSAL
Maisha RulapaughIndiaOnyama Limba RENEWAL
Deepesh ChuiJapanBernardo Dominic NEW
Ashley DoeArgentinaOnyama Limba UNQUALIFIED
Murillo MaletSpainElwin Sharvill QUALIFIED
Clifford RimAustraliaAnna Fali QUALIFIED
Adams MorascaSpainOnyama Limba RENEWAL
Faith GillianBrazilElwin Sharvill NEW
Ivar PaprockiArgentinaStephen Shaw NEW
Jones VocelkaArgentinaAnna Fali QUALIFIED
Stacey MacleadItalyOnyama Limba UNQUALIFIED
Kadeem FlosiItalyIoni Bowcher NEW
Maisha RulapaughUnited KingdomOnyama Limba NEGOTIATION
Johnson SergiItalyStephen Shaw NEW
Maria MarrierFranceIoni Bowcher QUALIFIED
Francesco ShinkoFranceOnyama Limba UNQUALIFIED
Sinclair WaycottSpainAmy Elsner UNQUALIFIED
Adams MorascaArgentinaIoni Bowcher QUALIFIED
Johnson SergiSpainStephen Shaw QUALIFIED
Munro FerenczGermanyBernardo Dominic NEW
Kaitlin OstroskySpainAsiya Javayant NEGOTIATION
Alejandro PerinRussiaStephen Shaw RENEWAL
Rodrigues CampainJapanStephen Shaw UNQUALIFIED
Sinclair WaycottJapanStephen Shaw QUALIFIED
Antonio CaudyItalyAsiya Javayant RENEWAL
Jones VocelkaJapanAmy Elsner RENEWAL
Leon OldroydCanadaElwin Sharvill QUALIFIED
Tony FollerBrazilIvan Magalhaes RENEWAL

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