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
Aruna FigeroaSpainOnyama Limba UNQUALIFIED
Darci PoquetteJapanIoni Bowcher RENEWAL
Jeanfrancois VenereItalyIvan Magalhaes PROPOSAL
Mujtaba NickaIndiaBernardo Dominic QUALIFIED
Mujtaba NickaArgentinaElwin Sharvill NEW
Ivar PaprockiRussiaAsiya Javayant PROPOSAL
Aruna FigeroaIndiaBernardo Dominic UNQUALIFIED
Aruna FigeroaIndiaXuxue Feng UNQUALIFIED
Octavia MaletItalyXuxue Feng RENEWAL
Antonio CaudyItalyOnyama Limba NEGOTIATION
Darci PoquetteIndiaAnna Fali NEGOTIATION
Adams MorascaArgentinaIoni Bowcher RENEWAL
Isabel BowleyCanadaIvan Magalhaes NEGOTIATION
Stacey MacleadJapanOnyama Limba QUALIFIED
Leon OldroydCanadaAsiya Javayant PROPOSAL
Juan WieserItalyOnyama Limba QUALIFIED
Ivar PaprockiRussiaIvan Magalhaes NEW
Leja CaldareraBrazilIvan Magalhaes QUALIFIED
Emily WhobreyUnited KingdomIoni Bowcher NEGOTIATION
Isabel BowleyArgentinaXuxue Feng NEGOTIATION
Julie StensethSpainOnyama Limba RENEWAL
Murillo MaletIndiaAnna Fali NEW
Nicolas IturbideCanadaStephen Shaw PROPOSAL
Adams MorascaGermanyIvan Magalhaes NEW
Leon OldroydUnited KingdomStephen Shaw PROPOSAL
Emily WhobreyUnited KingdomOnyama Limba UNQUALIFIED
Jeanfrancois VenereArgentinaBernardo Dominic NEGOTIATION
Alejandro PerinCanadaAnna Fali QUALIFIED
Costa DilliardBrazilAnna Fali NEGOTIATION
Jennifer AmigonGermanyOnyama Limba NEW
Sinclair WaycottRussiaOnyama Limba PROPOSAL
Faith GillianIndiaOnyama Limba NEGOTIATION
Jeanfrancois VenereAustraliaOnyama Limba PROPOSAL
James ButtGermanyElwin Sharvill PROPOSAL
Sinclair WaycottArgentinaIoni Bowcher NEW
Chavez BriddickSpainIoni Bowcher UNQUALIFIED
Misaki RoysterIndiaXuxue Feng RENEWAL
Greenwood BologniaUnited KingdomIvan Magalhaes NEW
Maisha RulapaughSpainXuxue Feng NEGOTIATION
Silvio SlusarskiAustraliaBernardo Dominic PROPOSAL
Wickens NestleSpainAmy Elsner PROPOSAL
David DarakjyUnited KingdomIvan Magalhaes QUALIFIED
Jennifer AmigonJapanXuxue Feng UNQUALIFIED
Aika InouyeIndiaOnyama Limba PROPOSAL
Silvio SlusarskiCanadaOnyama Limba NEW
Wickens NestleFranceElwin Sharvill QUALIFIED
Juan WieserSpainStephen Shaw NEW
Wickens NestleUnited KingdomElwin Sharvill QUALIFIED
Mayumi KolmetzGermanyIvan Magalhaes NEGOTIATION
Morrow RutaFranceXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ivar PaprockiItalyBernardo Dominic NEGOTIATION
Darci PoquetteSpainBernardo Dominic QUALIFIED
Morrow RutaIndiaOnyama Limba UNQUALIFIED
Leon OldroydAustraliaStephen Shaw PROPOSAL
Stacey MacleadGermanyIvan Magalhaes RENEWAL
Murillo MaletJapanBernardo Dominic QUALIFIED
Aruna FigeroaIndiaXuxue Feng UNQUALIFIED
Leon OldroydGermanyAsiya Javayant RENEWAL
Stacey MacleadIndiaAsiya Javayant PROPOSAL
Nicolas IturbideArgentinaOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar PaprockiArgentina2026-05-25Chemel, James L Cpa NEGOTIATION56Xuxue Feng
1001Jennifer AmigonSpain2026-05-15Printing Dimensions UNQUALIFIED97Amy Elsner
1002Aditya KuskoAustralia2026-05-23Chapman, Ross E Esq QUALIFIED36Amy Elsner
1003Rodrigues CampainFrance2026-05-12Truhlar And Truhlar Attys UNQUALIFIED18Stephen Shaw
1004Adams MorascaRussia2026-05-07Dorl, James J Esq PROPOSAL32Xuxue Feng
1005Isabel BowleyUnited Kingdom2026-05-28Printing Dimensions RENEWAL0Ioni Bowcher
1006Antonio CaudyAustralia2026-05-13Buckley Miller Wright UNQUALIFIED7Amy Elsner
1007Leon OldroydAustralia2026-05-21Rousseaux, Michael Esq UNQUALIFIED79Onyama Limba
1008Ricardo GauchoArgentina2026-05-07Chapman, Ross E Esq PROPOSAL94Ivan Magalhaes
1009Faith GillianSpain2026-06-05Feltz Printing Service NEW61Amy Elsner
1010Sinclair WaycottUnited Kingdom2026-05-30Truhlar And Truhlar Attys RENEWAL59Ivan Magalhaes
1011Stacey MacleadItaly2026-05-23Feiner Bros NEGOTIATION59Bernardo Dominic
1012Mujtaba NickaIndia2026-05-28Chanay, Jeffrey A Esq QUALIFIED4Xuxue Feng
1013Greenwood BologniaSpain2026-06-02Feltz Printing Service NEW70Elwin Sharvill
1014Kaitlin OstroskyIndia2026-05-26King, Christopher A Esq UNQUALIFIED48Amy Elsner
1015Munro FerenczAustralia2026-05-21Commercial Press UNQUALIFIED70Asiya Javayant
1016Arvin AlbaresAustralia2026-05-09Feiner Bros NEW52Anna Fali
1017Mujtaba NickaIndia2026-05-20Benton, John B Jr QUALIFIED84Stephen Shaw
1018James ButtArgentina2026-06-01Benton, John B Jr PROPOSAL16Asiya Javayant
1019Greenwood BologniaUnited Kingdom2026-06-01Buckley Miller Wright NEW6Ioni Bowcher
1020Morrow RutaGermany2026-06-02Chanay, Jeffrey A Esq QUALIFIED92Xuxue Feng
1021Claire TollnerRussia2026-06-02Buckley Miller Wright RENEWAL20Xuxue Feng
1022Mujtaba NickaSpain2026-05-29Rousseaux, Michael Esq PROPOSAL24Bernardo Dominic
1023Darci PoquetteSpain2026-05-17Dorl, James J Esq RENEWAL35Bernardo Dominic
1024Murillo MaletRussia2026-06-01Feltz Printing Service NEW52Stephen Shaw
1025Isabel BowleySpain2026-05-18Truhlar And Truhlar Attys NEGOTIATION26Amy Elsner
1026Francesco ShinkoRussia2026-05-24King, Christopher A Esq PROPOSAL20Amy Elsner
1027Salvatore StockhamSpain2026-05-29Dorl, James J Esq NEW5Ivan Magalhaes
1028Wickens NestleItaly2026-06-02Rousseaux, Michael Esq PROPOSAL27Ioni Bowcher
1029Mujtaba NickaCanada2026-06-05Rousseaux, Michael Esq NEGOTIATION98Amy Elsner
1030Maisha RulapaughJapan2026-05-28Chemel, James L Cpa RENEWAL7Elwin Sharvill
1031Francesco ShinkoArgentina2026-05-30Truhlar And Truhlar Attys QUALIFIED48Xuxue Feng
1032Alejandro PerinJapan2026-05-09Dorl, James J Esq QUALIFIED93Stephen Shaw
1033Juan WieserFrance2026-06-05Truhlar And Truhlar Attys RENEWAL16Xuxue Feng
1034Kadeem FlosiIndia2026-05-18Chanay, Jeffrey A Esq RENEWAL91Bernardo Dominic
1035Silvio SlusarskiJapan2026-05-31Benton, John B Jr RENEWAL13Onyama Limba
1036Smith GlickUnited Kingdom2026-05-30Feiner Bros NEW36Amy Elsner
1037Jennifer AmigonIndia2026-05-11Chemel, James L Cpa NEGOTIATION97Asiya Javayant
1038Isabel BowleyIndia2026-06-04Rousseaux, Michael Esq QUALIFIED0Elwin Sharvill
1039Leon OldroydItaly2026-05-23King, Christopher A Esq QUALIFIED25Asiya Javayant
1040Octavia MaletRussia2026-06-02Commercial Press NEW81Bernardo Dominic
1041Antonio CaudyCanada2026-05-15Feltz Printing Service UNQUALIFIED50Stephen Shaw
1042Kadeem FlosiJapan2026-05-20Feltz Printing Service NEGOTIATION39Stephen Shaw
1043Salvatore StockhamFrance2026-05-18Dorl, James J Esq NEGOTIATION65Stephen Shaw
1044Murillo MaletFrance2026-05-09Chemel, James L Cpa UNQUALIFIED25Amy Elsner
1045Johnson SergiIndia2026-05-28Commercial Press QUALIFIED14Elwin Sharvill
1046Jones VocelkaAustralia2026-05-28Feiner Bros RENEWAL81Ioni Bowcher
1047Maisha RulapaughFrance2026-05-08Dorl, James J Esq QUALIFIED84Elwin Sharvill
1048Chavez BriddickBrazil2026-05-16Morlong Associates QUALIFIED36Amy Elsner
1049Aika InouyeBrazil2026-05-28Truhlar And Truhlar Attys RENEWAL68Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Maisha RulapaughAustraliaAsiya Javayant QUALIFIED
Cody SaylorsArgentinaIoni Bowcher RENEWAL
Smith GlickRussiaBernardo Dominic RENEWAL
Nicolas IturbideArgentinaOnyama Limba PROPOSAL
Leja CaldareraGermanyIoni Bowcher UNQUALIFIED
Octavia MaletUnited KingdomElwin Sharvill NEGOTIATION
Kadeem FlosiJapanAsiya Javayant NEGOTIATION
Leja CaldareraSpainOnyama Limba NEW
Kaitlin OstroskyArgentinaBernardo Dominic PROPOSAL
Ivar PaprockiSpainOnyama Limba NEW
James ButtAustraliaBernardo Dominic QUALIFIED
Rodrigues CampainJapanAnna Fali NEW
Arvin AlbaresAustraliaOnyama Limba PROPOSAL
Jeanfrancois VenereCanadaIoni Bowcher UNQUALIFIED
Faith GillianCanadaOnyama Limba PROPOSAL
Ricardo GauchoIndiaIvan Magalhaes UNQUALIFIED
Munro FerenczGermanyIoni Bowcher NEW
Tony FollerIndiaIvan Magalhaes UNQUALIFIED
Adams MorascaRussiaAmy Elsner NEGOTIATION
Costa DilliardCanadaAmy Elsner NEGOTIATION
Wickens NestleSpainIvan Magalhaes NEGOTIATION
Isabel BowleyRussiaIvan Magalhaes QUALIFIED
Maria MarrierRussiaOnyama Limba NEW
Maisha RulapaughIndiaOnyama Limba PROPOSAL
Jennifer AmigonCanadaXuxue Feng NEGOTIATION
Rodrigues CampainItalyIvan Magalhaes RENEWAL
Maisha RulapaughBrazilAsiya Javayant NEW
Emily WhobreyAustraliaAsiya Javayant QUALIFIED
Smith GlickArgentinaOnyama Limba QUALIFIED
Jones VocelkaArgentinaIvan Magalhaes UNQUALIFIED
Claire TollnerSpainBernardo Dominic QUALIFIED
Morrow RutaArgentinaOnyama Limba QUALIFIED
Ashley DoeFranceAsiya Javayant QUALIFIED
James ButtJapanBernardo Dominic QUALIFIED
Jennifer AmigonCanadaIoni Bowcher NEW
Claire TollnerGermanyElwin Sharvill QUALIFIED
Murillo MaletRussiaOnyama Limba QUALIFIED
Morrow RutaCanadaXuxue Feng RENEWAL
Francesco ShinkoSpainBernardo Dominic UNQUALIFIED
Izzy GarufiArgentinaIoni Bowcher RENEWAL
Jennifer AmigonSpainBernardo Dominic PROPOSAL
Isabel BowleyAustraliaElwin Sharvill RENEWAL
Aruna FigeroaCanadaStephen Shaw RENEWAL
Nicolas IturbideGermanyIoni Bowcher NEGOTIATION
Maria MarrierFranceIvan Magalhaes QUALIFIED
Aruna FigeroaCanadaStephen Shaw RENEWAL
Silvio SlusarskiAustraliaXuxue Feng NEGOTIATION
Kadeem FlosiBrazilStephen Shaw QUALIFIED
Claire TollnerJapanXuxue Feng UNQUALIFIED
Ivar PaprockiItalyElwin Sharvill UNQUALIFIED
Frozen Columns
Name
Jefferson Schemmer
Chavez Briddick
Maria Marrier
Johnson Sergi
David Darakjy
Deepesh Chui
David Darakjy
Aika Inouye
Maisha Rulapaugh
Arvin Albares
Mujtaba Nicka
Munro Ferencz
Smith Glick
Silvio Slusarski
Costa Dilliard
Emily Whobrey
Rodrigues Campain
Ricardo Gaucho
Johnson Sergi
Murillo Malet
James Butt
Leja Caldarera
Alejandro Perin
Salvatore Stockham
Nicolas Iturbide
Misaki Royster
Greenwood Bolognia
Salvatore Stockham
Morrow Ruta
Jennifer Amigon
Misaki Royster
Misaki Royster
Kaitlin Ostrosky
Johnson Sergi
Tony Foller
Claire Tollner
Ivar Paprocki
Izzy Garufi
Maisha Rulapaugh
Johnson Sergi
Jennifer Amigon
Izzy Garufi
Darci Poquette
Octavia Malet
Kadeem Flosi
Aditya Kusko
Ashley Doe
Morrow Ruta
Darci Poquette
Ashley Doe
IdCountryDate
1000United Kingdom2026-05-27
1001France2026-05-24
1002Canada2026-05-15
1003Australia2026-05-11
1004Germany2026-05-18
1005Canada2026-05-16
1006Canada2026-06-02
1007Russia2026-05-25
1008Canada2026-05-10
1009Russia2026-06-04
1010United Kingdom2026-05-23
1011Germany2026-05-12
1012India2026-05-09
1013Brazil2026-05-24
1014Canada2026-05-28
1015France2026-05-26
1016Canada2026-05-14
1017Argentina2026-05-22
1018Italy2026-05-11
1019Canada2026-05-22
1020Spain2026-05-22
1021India2026-05-12
1022Canada2026-05-24
1023United Kingdom2026-05-26
1024Argentina2026-05-30
1025India2026-05-11
1026Spain2026-05-08
1027Canada2026-06-05
1028Spain2026-05-28
1029Italy2026-05-11
1030Russia2026-05-26
1031Canada2026-05-26
1032Germany2026-05-25
1033Germany2026-06-01
1034Germany2026-05-12
1035Japan2026-05-28
1036Germany2026-05-16
1037United Kingdom2026-05-19
1038United Kingdom2026-05-14
1039Spain2026-05-30
1040Russia2026-05-28
1041Japan2026-05-14
1042Germany2026-05-23
1043Germany2026-05-07
1044Germany2026-05-26
1045Japan2026-06-05
1046Canada2026-05-22
1047Brazil2026-05-22
1048Brazil2026-05-10
1049Spain2026-05-30

On-Demand Data

NameIdCountryDate
Silvio Slusarski1000United Kingdom2026-05-31
Ricardo Gaucho1001United Kingdom2026-05-07
Wickens Nestle1002Italy2026-06-01
Greenwood Bolognia1003Italy2026-05-19
Wickens Nestle1004India2026-06-01
Mayumi Kolmetz1005United Kingdom2026-05-29
Kaitlin Ostrosky1006India2026-05-29
Faith Gillian1007Brazil2026-05-13
Ashley Doe1008Argentina2026-05-25
Leja Caldarera1009Japan2026-05-25
Ashley Doe1010Italy2026-06-05
Greenwood Bolognia1011Russia2026-05-24
Morrow Ruta1012Canada2026-05-27
Aditya Kusko1013Japan2026-05-18
Julie Stenseth1014United Kingdom2026-06-04
Mujtaba Nicka1015India2026-05-30
Aditya Kusko1016Argentina2026-05-11
Sinclair Waycott1017Australia2026-05-12
Jeanfrancois Venere1018Japan2026-05-19
Kaitlin Ostrosky1019India2026-05-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtRussiaAnna Fali NEW
Julie StensethFranceAnna Fali QUALIFIED
Maisha RulapaughIndiaXuxue Feng RENEWAL
Sinclair WaycottRussiaBernardo Dominic UNQUALIFIED
Francesco ShinkoIndiaAnna Fali QUALIFIED
Morrow RutaRussiaAsiya Javayant PROPOSAL
Jones VocelkaIndiaOnyama Limba UNQUALIFIED
David DarakjyIndiaIoni Bowcher UNQUALIFIED
Ivar PaprockiAustraliaBernardo Dominic RENEWAL
Alejandro PerinItalyOnyama Limba NEGOTIATION
Claire TollnerFranceAnna Fali QUALIFIED
Arvin AlbaresRussiaStephen Shaw NEW
Deepesh ChuiItalyAsiya Javayant NEGOTIATION
Salvatore StockhamIndiaIvan Magalhaes PROPOSAL
Rodrigues CampainFranceAmy Elsner UNQUALIFIED
Tony FollerRussiaIoni Bowcher NEGOTIATION
Octavia MaletUnited KingdomElwin Sharvill PROPOSAL
Salvatore StockhamCanadaAnna Fali NEGOTIATION
Leon OldroydGermanyAmy Elsner UNQUALIFIED
Isabel BowleySpainIoni Bowcher NEW
Aruna FigeroaUnited KingdomStephen Shaw RENEWAL
Aruna FigeroaSpainAmy Elsner QUALIFIED
Kadeem FlosiBrazilStephen Shaw QUALIFIED
Francesco ShinkoRussiaXuxue Feng NEGOTIATION
Jennifer AmigonCanadaAsiya Javayant RENEWAL
Jeanfrancois VenereJapanElwin Sharvill NEGOTIATION
Arvin AlbaresAustraliaStephen Shaw NEGOTIATION
Silvio SlusarskiCanadaXuxue Feng NEW
Isabel BowleyBrazilAnna Fali RENEWAL
Kaitlin OstroskyGermanyBernardo Dominic NEW
Aika InouyeCanadaStephen Shaw QUALIFIED
Leon OldroydJapanStephen Shaw NEGOTIATION
Jones VocelkaUnited KingdomAmy Elsner QUALIFIED
Kadeem FlosiJapanXuxue Feng NEW
Jefferson SchemmerUnited KingdomXuxue Feng NEGOTIATION
Clifford RimSpainBernardo Dominic PROPOSAL
Claire TollnerAustraliaAnna Fali NEW
Mayumi KolmetzCanadaBernardo Dominic UNQUALIFIED
Jones VocelkaSpainAnna Fali PROPOSAL
Kadeem FlosiCanadaXuxue Feng 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>