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
Leja CaldareraAustraliaIoni Bowcher NEW
Aruna FigeroaGermanyXuxue Feng NEGOTIATION
Murillo MaletUnited KingdomIoni Bowcher NEGOTIATION
David DarakjyJapanAmy Elsner QUALIFIED
Greenwood BologniaItalyAmy Elsner RENEWAL
Chavez BriddickSpainAmy Elsner NEW
Stacey MacleadAustraliaIoni Bowcher PROPOSAL
Isabel BowleyRussiaIoni Bowcher NEGOTIATION
Claire TollnerArgentinaOnyama Limba UNQUALIFIED
Kaitlin OstroskySpainElwin Sharvill QUALIFIED
Clifford RimGermanyBernardo Dominic RENEWAL
Sinclair WaycottItalyOnyama Limba QUALIFIED
Aika InouyeCanadaBernardo Dominic PROPOSAL
Francesco ShinkoJapanAmy Elsner NEGOTIATION
Jefferson SchemmerSpainXuxue Feng RENEWAL
Jefferson SchemmerArgentinaIoni Bowcher RENEWAL
Faith GillianItalyIoni Bowcher NEGOTIATION
Francesco ShinkoGermanyIoni Bowcher PROPOSAL
Maria MarrierItalyElwin Sharvill RENEWAL
Sinclair WaycottBrazilXuxue Feng PROPOSAL
Izzy GarufiJapanAsiya Javayant PROPOSAL
Sinclair WaycottRussiaXuxue Feng QUALIFIED
Salvatore StockhamRussiaAnna Fali UNQUALIFIED
Juan WieserIndiaOnyama Limba NEGOTIATION
Silvio SlusarskiAustraliaOnyama Limba NEW
Julie StensethRussiaAsiya Javayant NEGOTIATION
Clifford RimBrazilBernardo Dominic NEGOTIATION
Nicolas IturbideGermanyBernardo Dominic QUALIFIED
David DarakjyUnited KingdomAsiya Javayant NEW
Stacey MacleadJapanXuxue Feng QUALIFIED
Silvio SlusarskiArgentinaIoni Bowcher RENEWAL
Wickens NestleItalyAnna Fali NEGOTIATION
Chavez BriddickFranceIvan Magalhaes PROPOSAL
Adams MorascaRussiaOnyama Limba PROPOSAL
Jeanfrancois VenereBrazilStephen Shaw QUALIFIED
Jones VocelkaIndiaIvan Magalhaes RENEWAL
Antonio CaudyRussiaIoni Bowcher QUALIFIED
Rodrigues CampainBrazilOnyama Limba QUALIFIED
Arvin AlbaresGermanyOnyama Limba NEGOTIATION
Costa DilliardItalyIvan Magalhaes PROPOSAL
Ricardo GauchoGermanyAmy Elsner RENEWAL
Nicolas IturbideIndiaOnyama Limba QUALIFIED
Aditya KuskoGermanyAmy Elsner QUALIFIED
David DarakjyBrazilIoni Bowcher RENEWAL
Munro FerenczRussiaAmy Elsner QUALIFIED
Leja CaldareraBrazilAnna Fali PROPOSAL
Alejandro PerinSpainAsiya Javayant NEGOTIATION
David DarakjyItalyAmy Elsner QUALIFIED
Cody SaylorsJapanAsiya Javayant QUALIFIED
Faith GillianUnited KingdomOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Faith GillianFranceIoni Bowcher QUALIFIED
Silvio SlusarskiFranceXuxue Feng RENEWAL
Misaki RoysterSpainElwin Sharvill UNQUALIFIED
Emily WhobreyArgentinaBernardo Dominic NEGOTIATION
Mayumi KolmetzCanadaAnna Fali RENEWAL
Maria MarrierArgentinaIvan Magalhaes RENEWAL
Francesco ShinkoFranceIvan Magalhaes NEW
Sinclair WaycottItalyAsiya Javayant NEGOTIATION
Salvatore StockhamItalyXuxue Feng PROPOSAL
Ashley DoeArgentinaIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Adams MorascaUnited Kingdom2026-05-02Buckley Miller Wright RENEWAL45Elwin Sharvill
1001Jefferson SchemmerGermany2026-05-01Rousseaux, Michael Esq NEGOTIATION72Elwin Sharvill
1002Jennifer AmigonGermany2026-04-18Commercial Press UNQUALIFIED50Xuxue Feng
1003Ivar PaprockiUnited Kingdom2026-05-10Truhlar And Truhlar Attys QUALIFIED81Anna Fali
1004Darci PoquetteItaly2026-05-12Buckley Miller Wright NEW82Bernardo Dominic
1005Salvatore StockhamCanada2026-05-02Morlong Associates NEGOTIATION40Bernardo Dominic
1006Mujtaba NickaBrazil2026-04-28Chemel, James L Cpa UNQUALIFIED78Xuxue Feng
1007Kaitlin OstroskyUnited Kingdom2026-04-22Commercial Press RENEWAL91Asiya Javayant
1008Ricardo GauchoArgentina2026-04-27Chapman, Ross E Esq UNQUALIFIED26Ivan Magalhaes
1009Deepesh ChuiSpain2026-05-09Buckley Miller Wright PROPOSAL93Asiya Javayant
1010Aruna FigeroaAustralia2026-05-06Feltz Printing Service RENEWAL92Amy Elsner
1011Johnson SergiRussia2026-04-24Truhlar And Truhlar Attys UNQUALIFIED67Ioni Bowcher
1012Jeanfrancois VenereItaly2026-05-11Rousseaux, Michael Esq QUALIFIED3Bernardo Dominic
1013Darci PoquetteItaly2026-04-16Chemel, James L Cpa NEGOTIATION88Ivan Magalhaes
1014Jeanfrancois VenereGermany2026-05-10Truhlar And Truhlar Attys RENEWAL14Asiya Javayant
1015Francesco ShinkoArgentina2026-04-23Chapman, Ross E Esq RENEWAL51Asiya Javayant
1016Juan WieserGermany2026-05-04Chemel, James L Cpa NEW88Ivan Magalhaes
1017Ivar PaprockiAustralia2026-05-05Printing Dimensions NEGOTIATION59Bernardo Dominic
1018Tony FollerSpain2026-04-17Buckley Miller Wright RENEWAL14Xuxue Feng
1019Silvio SlusarskiArgentina2026-04-26Feiner Bros NEGOTIATION58Amy Elsner
1020Izzy GarufiCanada2026-05-14Printing Dimensions QUALIFIED99Ioni Bowcher
1021Arvin AlbaresFrance2026-04-18Feltz Printing Service UNQUALIFIED70Anna Fali
1022James ButtJapan2026-04-20Chemel, James L Cpa PROPOSAL33Stephen Shaw
1023Johnson SergiCanada2026-04-17Feiner Bros UNQUALIFIED32Anna Fali
1024Leja CaldareraItaly2026-04-18Truhlar And Truhlar Attys QUALIFIED61Anna Fali
1025Mujtaba NickaAustralia2026-05-07Buckley Miller Wright NEW23Anna Fali
1026Deepesh ChuiBrazil2026-05-08Rousseaux, Michael Esq PROPOSAL8Ivan Magalhaes
1027Sinclair WaycottAustralia2026-05-10Rousseaux, Michael Esq NEW29Amy Elsner
1028Kaitlin OstroskyCanada2026-05-08Truhlar And Truhlar Attys NEGOTIATION16Bernardo Dominic
1029Jefferson SchemmerUnited Kingdom2026-04-21Printing Dimensions RENEWAL34Ivan Magalhaes
1030Claire TollnerSpain2026-04-19Chemel, James L Cpa PROPOSAL10Ivan Magalhaes
1031Deepesh ChuiBrazil2026-05-14Feltz Printing Service NEW76Elwin Sharvill
1032Aruna FigeroaFrance2026-05-01Benton, John B Jr UNQUALIFIED35Ioni Bowcher
1033Nicolas IturbideJapan2026-04-27Chanay, Jeffrey A Esq RENEWAL6Anna Fali
1034Sinclair WaycottFrance2026-05-14Truhlar And Truhlar Attys QUALIFIED92Xuxue Feng
1035Tony FollerRussia2026-04-20Rousseaux, Michael Esq QUALIFIED91Asiya Javayant
1036Deepesh ChuiSpain2026-04-15Truhlar And Truhlar Attys UNQUALIFIED19Bernardo Dominic
1037Murillo MaletSpain2026-05-04Rousseaux, Michael Esq NEGOTIATION83Amy Elsner
1038Wickens NestleItaly2026-05-10Chanay, Jeffrey A Esq NEW18Elwin Sharvill
1039Aika InouyeAustralia2026-05-09Buckley Miller Wright PROPOSAL39Amy Elsner
1040Munro FerenczCanada2026-04-17Feiner Bros PROPOSAL20Ivan Magalhaes
1041Munro FerenczFrance2026-04-17Rangoni Of Florence NEGOTIATION50Anna Fali
1042Mujtaba NickaFrance2026-05-11Feiner Bros QUALIFIED7Ioni Bowcher
1043Julie StensethJapan2026-04-30Printing Dimensions NEW79Stephen Shaw
1044Jones VocelkaAustralia2026-05-13Dorl, James J Esq UNQUALIFIED8Asiya Javayant
1045Francesco ShinkoIndia2026-04-25King, Christopher A Esq PROPOSAL68Onyama Limba
1046Misaki RoysterArgentina2026-05-12Dorl, James J Esq RENEWAL33Elwin Sharvill
1047Cody SaylorsCanada2026-04-22Dorl, James J Esq QUALIFIED5Ioni Bowcher
1048Deepesh ChuiItaly2026-05-07Chemel, James L Cpa UNQUALIFIED69Elwin Sharvill
1049Rodrigues CampainRussia2026-05-13Rangoni Of Florence NEW70Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Aruna FigeroaGermanyAnna Fali QUALIFIED
Misaki RoysterArgentinaAmy Elsner RENEWAL
Johnson SergiJapanBernardo Dominic RENEWAL
Clifford RimJapanBernardo Dominic QUALIFIED
Aika InouyeArgentinaBernardo Dominic PROPOSAL
Jones VocelkaJapanBernardo Dominic PROPOSAL
Rodrigues CampainIndiaIoni Bowcher QUALIFIED
Isabel BowleyAustraliaOnyama Limba PROPOSAL
Jefferson SchemmerItalyOnyama Limba NEGOTIATION
Nicolas IturbideSpainIvan Magalhaes NEW
Deepesh ChuiSpainAmy Elsner QUALIFIED
James ButtGermanyIoni Bowcher RENEWAL
Antonio CaudyJapanOnyama Limba QUALIFIED
Cody SaylorsAustraliaStephen Shaw RENEWAL
Clifford RimArgentinaIoni Bowcher QUALIFIED
Isabel BowleyIndiaIoni Bowcher PROPOSAL
Isabel BowleySpainAnna Fali UNQUALIFIED
Darci PoquetteAustraliaStephen Shaw QUALIFIED
Sinclair WaycottItalyIoni Bowcher NEW
Leon OldroydIndiaOnyama Limba UNQUALIFIED
Deepesh ChuiJapanAnna Fali PROPOSAL
James ButtSpainStephen Shaw PROPOSAL
Stacey MacleadAustraliaAmy Elsner PROPOSAL
Ivar PaprockiJapanAmy Elsner RENEWAL
Arvin AlbaresFranceXuxue Feng PROPOSAL
Leja CaldareraGermanyStephen Shaw UNQUALIFIED
Darci PoquetteRussiaIoni Bowcher NEGOTIATION
Juan WieserGermanyElwin Sharvill PROPOSAL
Smith GlickArgentinaBernardo Dominic NEW
Maria MarrierRussiaElwin Sharvill NEGOTIATION
Ashley DoeSpainBernardo Dominic RENEWAL
Aditya KuskoGermanyBernardo Dominic NEGOTIATION
Aika InouyeAustraliaXuxue Feng RENEWAL
Octavia MaletJapanStephen Shaw RENEWAL
Jeanfrancois VenereUnited KingdomStephen Shaw RENEWAL
Clifford RimCanadaAnna Fali NEW
Aika InouyeItalyAnna Fali PROPOSAL
Adams MorascaCanadaIvan Magalhaes RENEWAL
Faith GillianCanadaBernardo Dominic PROPOSAL
Morrow RutaGermanyIvan Magalhaes NEGOTIATION
Isabel BowleyGermanyXuxue Feng QUALIFIED
Alejandro PerinArgentinaAmy Elsner QUALIFIED
Antonio CaudyJapanIvan Magalhaes QUALIFIED
Faith GillianArgentinaElwin Sharvill QUALIFIED
Munro FerenczFranceStephen Shaw RENEWAL
Stacey MacleadItalyIvan Magalhaes RENEWAL
Alejandro PerinArgentinaBernardo Dominic PROPOSAL
Wickens NestleSpainIoni Bowcher UNQUALIFIED
Tony FollerSpainBernardo Dominic NEGOTIATION
Rodrigues CampainArgentinaOnyama Limba NEW
Frozen Columns
Name
Antonio Caudy
Alejandro Perin
Jeanfrancois Venere
Ivar Paprocki
Jones Vocelka
Mayumi Kolmetz
Ricardo Gaucho
Juan Wieser
Isabel Bowley
Stacey Maclead
Adams Morasca
Morrow Ruta
Izzy Garufi
Aruna Figeroa
Mayumi Kolmetz
Maria Marrier
Smith Glick
Claire Tollner
Rodrigues Campain
Antonio Caudy
Smith Glick
Izzy Garufi
Murillo Malet
Stacey Maclead
Juan Wieser
Faith Gillian
Maria Marrier
Jefferson Schemmer
Tony Foller
Jones Vocelka
Jefferson Schemmer
Chavez Briddick
Arvin Albares
Ricardo Gaucho
Rodrigues Campain
Costa Dilliard
David Darakjy
Mujtaba Nicka
Jennifer Amigon
Adams Morasca
Costa Dilliard
Arvin Albares
Isabel Bowley
Deepesh Chui
Octavia Malet
Octavia Malet
Deepesh Chui
Octavia Malet
Maisha Rulapaugh
Aruna Figeroa
IdCountryDate
1000Australia2026-04-29
1001Italy2026-04-28
1002Brazil2026-04-18
1003Japan2026-04-18
1004Argentina2026-05-13
1005Argentina2026-05-09
1006Canada2026-04-19
1007France2026-05-14
1008Japan2026-05-11
1009France2026-05-14
1010United Kingdom2026-04-16
1011Australia2026-04-28
1012Australia2026-05-03
1013Australia2026-05-06
1014Argentina2026-05-01
1015Russia2026-05-08
1016India2026-04-30
1017Russia2026-04-27
1018Argentina2026-05-06
1019United Kingdom2026-05-10
1020Russia2026-04-27
1021Italy2026-04-28
1022France2026-05-11
1023United Kingdom2026-04-15
1024India2026-05-08
1025France2026-05-12
1026Spain2026-05-01
1027Canada2026-05-06
1028Argentina2026-04-21
1029Canada2026-04-26
1030Russia2026-05-09
1031Australia2026-04-18
1032France2026-05-14
1033Canada2026-04-20
1034France2026-04-18
1035Canada2026-04-24
1036France2026-04-20
1037Brazil2026-04-16
1038United Kingdom2026-04-24
1039Spain2026-04-28
1040Japan2026-05-14
1041Spain2026-05-12
1042Canada2026-05-02
1043United Kingdom2026-04-20
1044Russia2026-04-19
1045India2026-04-19
1046United Kingdom2026-05-13
1047Argentina2026-04-23
1048Australia2026-05-13
1049United Kingdom2026-05-03

On-Demand Data

NameIdCountryDate
Jennifer Amigon1000United Kingdom2026-04-30
Leon Oldroyd1001Spain2026-04-21
Wickens Nestle1002Russia2026-05-14
Ricardo Gaucho1003Spain2026-04-21
Aika Inouye1004Canada2026-05-07
Greenwood Bolognia1005Italy2026-04-17
Smith Glick1006Japan2026-05-06
Clifford Rim1007Spain2026-05-14
Maria Marrier1008Brazil2026-04-18
Alejandro Perin1009Japan2026-04-20
Rodrigues Campain1010Brazil2026-04-17
Rodrigues Campain1011France2026-05-09
Octavia Malet1012Japan2026-04-17
Jones Vocelka1013France2026-05-13
Faith Gillian1014Canada2026-05-07
Stacey Maclead1015Australia2026-04-29
Leja Caldarera1016Japan2026-05-05
Mayumi Kolmetz1017Germany2026-04-15
Juan Wieser1018Brazil2026-05-11
Aika Inouye1019Spain2026-05-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Munro FerenczJapanElwin Sharvill UNQUALIFIED
Greenwood BologniaUnited KingdomStephen Shaw QUALIFIED
Juan WieserBrazilBernardo Dominic QUALIFIED
Greenwood BologniaArgentinaOnyama Limba PROPOSAL
Jefferson SchemmerAustraliaOnyama Limba QUALIFIED
Nicolas IturbideBrazilAnna Fali NEW
Ricardo GauchoItalyOnyama Limba NEGOTIATION
Darci PoquetteItalyStephen Shaw RENEWAL
Tony FollerGermanyIoni Bowcher RENEWAL
Murillo MaletBrazilOnyama Limba NEW
Mayumi KolmetzRussiaAmy Elsner UNQUALIFIED
Aditya KuskoAustraliaElwin Sharvill RENEWAL
Antonio CaudyArgentinaAsiya Javayant PROPOSAL
Kaitlin OstroskyCanadaXuxue Feng NEW
Octavia MaletAustraliaOnyama Limba PROPOSAL
Jennifer AmigonItalyBernardo Dominic NEW
Adams MorascaRussiaAsiya Javayant NEGOTIATION
Julie StensethCanadaOnyama Limba PROPOSAL
Johnson SergiJapanAsiya Javayant UNQUALIFIED
Ivar PaprockiItalyAsiya Javayant NEGOTIATION
Julie StensethArgentinaXuxue Feng RENEWAL
Aditya KuskoJapanOnyama Limba NEGOTIATION
Costa DilliardCanadaAsiya Javayant RENEWAL
Aditya KuskoFranceXuxue Feng PROPOSAL
Juan WieserBrazilBernardo Dominic NEW
Claire TollnerArgentinaIvan Magalhaes QUALIFIED
Leon OldroydJapanAmy Elsner QUALIFIED
Octavia MaletRussiaAsiya Javayant PROPOSAL
Sinclair WaycottAustraliaOnyama Limba UNQUALIFIED
Costa DilliardJapanXuxue Feng UNQUALIFIED
Aruna FigeroaArgentinaAmy Elsner UNQUALIFIED
Ashley DoeBrazilIvan Magalhaes QUALIFIED
Nicolas IturbideUnited KingdomAmy Elsner UNQUALIFIED
Chavez BriddickRussiaOnyama Limba NEW
Mujtaba NickaUnited KingdomStephen Shaw NEGOTIATION
Ivar PaprockiArgentinaAmy Elsner NEW
Maria MarrierCanadaBernardo Dominic NEW
Julie StensethIndiaStephen Shaw RENEWAL
Maria MarrierGermanyAsiya Javayant NEW
Leja CaldareraArgentinaOnyama Limba 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>