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
Maisha RulapaughIndiaIvan Magalhaes PROPOSAL
Ivar PaprockiArgentinaElwin Sharvill QUALIFIED
David DarakjyArgentinaAmy Elsner QUALIFIED
Chavez BriddickIndiaXuxue Feng PROPOSAL
Costa DilliardIndiaIoni Bowcher QUALIFIED
Jeanfrancois VenereAustraliaIoni Bowcher QUALIFIED
Octavia MaletCanadaIvan Magalhaes PROPOSAL
Aika InouyeUnited KingdomStephen Shaw QUALIFIED
Kaitlin OstroskyArgentinaOnyama Limba PROPOSAL
James ButtItalyAnna Fali NEW
Jeanfrancois VenereAustraliaAsiya Javayant PROPOSAL
Costa DilliardUnited KingdomXuxue Feng NEGOTIATION
Darci PoquetteItalyBernardo Dominic QUALIFIED
Ricardo GauchoAustraliaBernardo Dominic NEW
Costa DilliardSpainIvan Magalhaes PROPOSAL
Sinclair WaycottArgentinaAnna Fali PROPOSAL
Leja CaldareraSpainXuxue Feng UNQUALIFIED
Jefferson SchemmerJapanBernardo Dominic NEGOTIATION
Antonio CaudyJapanOnyama Limba UNQUALIFIED
Murillo MaletSpainXuxue Feng NEW
Francesco ShinkoSpainStephen Shaw NEGOTIATION
Cody SaylorsJapanStephen Shaw UNQUALIFIED
Juan WieserFranceElwin Sharvill QUALIFIED
Rodrigues CampainFranceAnna Fali NEW
Juan WieserArgentinaElwin Sharvill PROPOSAL
Wickens NestleGermanyAsiya Javayant PROPOSAL
David DarakjyRussiaAsiya Javayant NEGOTIATION
Antonio CaudyUnited KingdomBernardo Dominic PROPOSAL
Arvin AlbaresUnited KingdomBernardo Dominic QUALIFIED
Octavia MaletGermanyStephen Shaw NEW
David DarakjyGermanyIoni Bowcher QUALIFIED
Kadeem FlosiItalyIoni Bowcher QUALIFIED
James ButtBrazilAsiya Javayant UNQUALIFIED
Salvatore StockhamArgentinaXuxue Feng NEW
Greenwood BologniaItalyAsiya Javayant RENEWAL
Nicolas IturbideCanadaAsiya Javayant PROPOSAL
Juan WieserFranceOnyama Limba PROPOSAL
Johnson SergiArgentinaOnyama Limba UNQUALIFIED
Ashley DoeIndiaBernardo Dominic QUALIFIED
Darci PoquetteCanadaIoni Bowcher NEW
Costa DilliardIndiaAsiya Javayant NEW
Cody SaylorsArgentinaElwin Sharvill QUALIFIED
Jennifer AmigonSpainAsiya Javayant PROPOSAL
Nicolas IturbideUnited KingdomStephen Shaw NEGOTIATION
Maisha RulapaughItalyElwin Sharvill UNQUALIFIED
Deepesh ChuiUnited KingdomIvan Magalhaes NEW
Nicolas IturbideBrazilAnna Fali PROPOSAL
Maria MarrierUnited KingdomOnyama Limba NEW
Jones VocelkaUnited KingdomStephen Shaw QUALIFIED
Ivar PaprockiGermanyStephen Shaw RENEWAL
Horizontal
NameCountryRepresentativeStatus
Arvin AlbaresUnited KingdomBernardo Dominic QUALIFIED
Kaitlin OstroskyBrazilAsiya Javayant UNQUALIFIED
David DarakjyIndiaBernardo Dominic PROPOSAL
Jeanfrancois VenereSpainAsiya Javayant UNQUALIFIED
Chavez BriddickItalyAmy Elsner RENEWAL
Clifford RimIndiaAnna Fali NEW
Kadeem FlosiIndiaStephen Shaw RENEWAL
Ricardo GauchoRussiaXuxue Feng RENEWAL
Wickens NestleJapanXuxue Feng RENEWAL
Emily WhobreyCanadaOnyama Limba PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia MaletAustralia2025-09-27Truhlar And Truhlar Attys PROPOSAL25Asiya Javayant
1001Munro FerenczRussia2025-09-16Buckley Miller Wright NEGOTIATION88Onyama Limba
1002Ricardo GauchoSpain2025-09-13Rousseaux, Michael Esq UNQUALIFIED34Asiya Javayant
1003Smith GlickJapan2025-09-23Chemel, James L Cpa RENEWAL82Ioni Bowcher
1004Alejandro PerinAustralia2025-09-23Feltz Printing Service RENEWAL72Onyama Limba
1005Kadeem FlosiUnited Kingdom2025-10-04Feiner Bros PROPOSAL89Asiya Javayant
1006Morrow RutaCanada2025-10-08Benton, John B Jr RENEWAL75Bernardo Dominic
1007Rodrigues CampainItaly2025-09-25Feltz Printing Service NEW1Bernardo Dominic
1008Jeanfrancois VenereIndia2025-10-04King, Christopher A Esq RENEWAL92Asiya Javayant
1009Silvio SlusarskiBrazil2025-09-28Dorl, James J Esq NEGOTIATION86Xuxue Feng
1010Wickens NestleCanada2025-09-19Chapman, Ross E Esq PROPOSAL2Bernardo Dominic
1011Julie StensethItaly2025-09-25Truhlar And Truhlar Attys UNQUALIFIED2Stephen Shaw
1012Jeanfrancois VenereJapan2025-09-17Chemel, James L Cpa NEW61Stephen Shaw
1013Arvin AlbaresBrazil2025-10-04Benton, John B Jr QUALIFIED59Elwin Sharvill
1014Maria MarrierBrazil2025-09-13Dorl, James J Esq RENEWAL39Elwin Sharvill
1015Aruna FigeroaCanada2025-10-04Chanay, Jeffrey A Esq NEW31Anna Fali
1016Maisha RulapaughItaly2025-10-08Rousseaux, Michael Esq NEW96Anna Fali
1017Misaki RoysterItaly2025-10-09Buckley Miller Wright PROPOSAL13Amy Elsner
1018Cody SaylorsCanada2025-09-18Morlong Associates RENEWAL60Stephen Shaw
1019Maria MarrierGermany2025-09-25Feiner Bros QUALIFIED54Bernardo Dominic
1020Morrow RutaUnited Kingdom2025-09-13King, Christopher A Esq QUALIFIED87Elwin Sharvill
1021Johnson SergiSpain2025-09-23Printing Dimensions RENEWAL36Elwin Sharvill
1022Jennifer AmigonAustralia2025-09-22Dorl, James J Esq NEGOTIATION94Xuxue Feng
1023Morrow RutaItaly2025-10-11Chemel, James L Cpa NEGOTIATION68Stephen Shaw
1024Darci PoquetteBrazil2025-10-09Buckley Miller Wright NEGOTIATION62Anna Fali
1025Tony FollerUnited Kingdom2025-09-19Benton, John B Jr UNQUALIFIED53Elwin Sharvill
1026Adams MorascaArgentina2025-09-14Printing Dimensions UNQUALIFIED79Ivan Magalhaes
1027Mayumi KolmetzIndia2025-09-20Chapman, Ross E Esq NEW47Anna Fali
1028Salvatore StockhamItaly2025-09-13Rangoni Of Florence NEGOTIATION38Ioni Bowcher
1029Darci PoquetteJapan2025-09-17Feltz Printing Service QUALIFIED44Ioni Bowcher
1030Greenwood BologniaAustralia2025-09-19Rangoni Of Florence PROPOSAL73Ivan Magalhaes
1031Adams MorascaAustralia2025-10-08Morlong Associates QUALIFIED16Anna Fali
1032Ricardo GauchoSpain2025-09-25Chapman, Ross E Esq QUALIFIED27Onyama Limba
1033Jefferson SchemmerCanada2025-09-26Buckley Miller Wright RENEWAL45Amy Elsner
1034Juan WieserItaly2025-10-03Morlong Associates NEGOTIATION44Stephen Shaw
1035Alejandro PerinJapan2025-09-15Chapman, Ross E Esq RENEWAL63Amy Elsner
1036Munro FerenczJapan2025-09-15Buckley Miller Wright RENEWAL45Ivan Magalhaes
1037Jeanfrancois VenereGermany2025-09-28Chapman, Ross E Esq QUALIFIED21Anna Fali
1038Clifford RimGermany2025-10-02Truhlar And Truhlar Attys RENEWAL51Asiya Javayant
1039Stacey MacleadUnited Kingdom2025-10-02Rousseaux, Michael Esq UNQUALIFIED59Elwin Sharvill
1040Izzy GarufiSpain2025-09-28Chapman, Ross E Esq NEW3Stephen Shaw
1041Stacey MacleadUnited Kingdom2025-09-15Chemel, James L Cpa UNQUALIFIED46Ioni Bowcher
1042Stacey MacleadAustralia2025-09-29Chanay, Jeffrey A Esq NEGOTIATION1Ivan Magalhaes
1043David DarakjyArgentina2025-09-27Feltz Printing Service QUALIFIED44Xuxue Feng
1044Nicolas IturbideIndia2025-09-22Benton, John B Jr NEGOTIATION58Asiya Javayant
1045Francesco ShinkoUnited Kingdom2025-10-06Commercial Press UNQUALIFIED13Ioni Bowcher
1046Jefferson SchemmerAustralia2025-09-29Chapman, Ross E Esq NEW20Bernardo Dominic
1047Clifford RimSpain2025-09-28Rangoni Of Florence NEGOTIATION48Onyama Limba
1048Jeanfrancois VenereGermany2025-10-04Rousseaux, Michael Esq NEW88Ioni Bowcher
1049Ivar PaprockiIndia2025-09-29Truhlar And Truhlar Attys RENEWAL2Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba NickaGermanyElwin Sharvill PROPOSAL
Murillo MaletGermanyXuxue Feng PROPOSAL
David DarakjyJapanOnyama Limba NEGOTIATION
Julie StensethSpainAmy Elsner NEW
Silvio SlusarskiJapanXuxue Feng RENEWAL
Tony FollerAustraliaStephen Shaw PROPOSAL
Juan WieserAustraliaBernardo Dominic QUALIFIED
Ashley DoeCanadaBernardo Dominic NEW
Jones VocelkaRussiaXuxue Feng NEW
Aruna FigeroaAustraliaIoni Bowcher NEGOTIATION
Maisha RulapaughRussiaAsiya Javayant QUALIFIED
Johnson SergiIndiaBernardo Dominic UNQUALIFIED
Rodrigues CampainArgentinaOnyama Limba NEGOTIATION
Ricardo GauchoJapanStephen Shaw NEGOTIATION
Smith GlickGermanyAnna Fali RENEWAL
Antonio CaudyBrazilAmy Elsner UNQUALIFIED
Johnson SergiItalyXuxue Feng NEW
Sinclair WaycottIndiaAnna Fali RENEWAL
Mayumi KolmetzItalyIvan Magalhaes NEGOTIATION
James ButtGermanyElwin Sharvill QUALIFIED
Clifford RimSpainAmy Elsner RENEWAL
Ricardo GauchoRussiaIoni Bowcher NEGOTIATION
Alejandro PerinRussiaIvan Magalhaes NEW
Juan WieserArgentinaXuxue Feng RENEWAL
Smith GlickGermanyIoni Bowcher RENEWAL
Ashley DoeUnited KingdomIvan Magalhaes PROPOSAL
Mayumi KolmetzGermanyIvan Magalhaes PROPOSAL
Juan WieserArgentinaAmy Elsner NEW
Aditya KuskoIndiaAmy Elsner QUALIFIED
Aika InouyeRussiaAmy Elsner PROPOSAL
Isabel BowleyCanadaElwin Sharvill NEGOTIATION
Arvin AlbaresItalyXuxue Feng RENEWAL
James ButtSpainAmy Elsner NEGOTIATION
David DarakjyCanadaXuxue Feng RENEWAL
Sinclair WaycottFranceOnyama Limba UNQUALIFIED
Silvio SlusarskiAustraliaIvan Magalhaes RENEWAL
Kadeem FlosiCanadaIoni Bowcher RENEWAL
Aika InouyeRussiaAnna Fali NEGOTIATION
Darci PoquetteIndiaElwin Sharvill QUALIFIED
Ivar PaprockiGermanyIvan Magalhaes UNQUALIFIED
Ricardo GauchoItalyBernardo Dominic QUALIFIED
Faith GillianJapanOnyama Limba NEW
Morrow RutaIndiaIoni Bowcher NEW
Maisha RulapaughItalyStephen Shaw QUALIFIED
Jefferson SchemmerArgentinaAnna Fali PROPOSAL
Kadeem FlosiFranceIvan Magalhaes NEW
Julie StensethGermanyXuxue Feng UNQUALIFIED
Ricardo GauchoCanadaElwin Sharvill QUALIFIED
Aika InouyeFranceElwin Sharvill NEW
Ricardo GauchoRussiaAnna Fali PROPOSAL
Frozen Columns
Name
Isabel Bowley
Rodrigues Campain
Juan Wieser
Wickens Nestle
Arvin Albares
Maria Marrier
Misaki Royster
Sinclair Waycott
Silvio Slusarski
Ashley Doe
Nicolas Iturbide
Murillo Malet
Rodrigues Campain
Faith Gillian
Mujtaba Nicka
Misaki Royster
Rodrigues Campain
Emily Whobrey
Costa Dilliard
David Darakjy
Kadeem Flosi
Emily Whobrey
Jennifer Amigon
Sinclair Waycott
Emily Whobrey
Ricardo Gaucho
Maisha Rulapaugh
Maisha Rulapaugh
Morrow Ruta
Stacey Maclead
Smith Glick
Jones Vocelka
Greenwood Bolognia
Francesco Shinko
Juan Wieser
Aruna Figeroa
Murillo Malet
Octavia Malet
Francesco Shinko
Costa Dilliard
Smith Glick
Ivar Paprocki
Munro Ferencz
Kaitlin Ostrosky
Aruna Figeroa
Kaitlin Ostrosky
Jones Vocelka
Julie Stenseth
Greenwood Bolognia
Izzy Garufi
IdCountryDate
1000United Kingdom2025-09-20
1001Italy2025-09-23
1002Brazil2025-09-26
1003Italy2025-09-14
1004Italy2025-09-19
1005Australia2025-10-01
1006Spain2025-09-21
1007Canada2025-09-19
1008France2025-10-02
1009Japan2025-10-04
1010Spain2025-10-08
1011Japan2025-10-02
1012Russia2025-10-05
1013Russia2025-09-20
1014Japan2025-09-22
1015Brazil2025-10-10
1016Argentina2025-10-05
1017India2025-10-06
1018Canada2025-10-07
1019Brazil2025-09-15
1020Brazil2025-09-23
1021France2025-10-06
1022Australia2025-09-29
1023Spain2025-10-06
1024Italy2025-09-24
1025Australia2025-09-26
1026Canada2025-09-20
1027Canada2025-10-01
1028Brazil2025-10-01
1029Canada2025-09-18
1030Spain2025-09-29
1031Spain2025-09-21
1032Germany2025-09-16
1033India2025-09-25
1034Spain2025-09-30
1035Germany2025-10-10
1036United Kingdom2025-10-08
1037Italy2025-09-20
1038Argentina2025-09-21
1039Japan2025-09-24
1040Italy2025-09-13
1041France2025-10-04
1042Spain2025-09-14
1043Canada2025-10-08
1044Japan2025-10-11
1045Argentina2025-10-07
1046Spain2025-10-11
1047Argentina2025-10-04
1048Spain2025-09-23
1049Russia2025-09-21

On-Demand Data

NameIdCountryDate
Juan Wieser1000India2025-09-18
Costa Dilliard1001Spain2025-09-24
Antonio Caudy1002Australia2025-10-04
Silvio Slusarski1003United Kingdom2025-10-05
Rodrigues Campain1004United Kingdom2025-09-26
Adams Morasca1005Italy2025-10-03
David Darakjy1006Argentina2025-10-07
Isabel Bowley1007Brazil2025-09-15
Jefferson Schemmer1008India2025-09-27
Sinclair Waycott1009France2025-09-28
Izzy Garufi1010Spain2025-10-02
Smith Glick1011Germany2025-09-21
Octavia Malet1012India2025-09-24
Chavez Briddick1013France2025-10-07
Kaitlin Ostrosky1014France2025-10-11
Alejandro Perin1015Spain2025-10-08
Cody Saylors1016Argentina2025-10-06
Jefferson Schemmer1017Argentina2025-09-28
Francesco Shinko1018Spain2025-09-19
Morrow Ruta1019France2025-09-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci PoquetteUnited KingdomIoni Bowcher NEGOTIATION
Jeanfrancois VenereItalyStephen Shaw RENEWAL
Costa DilliardAustraliaIoni Bowcher NEW
Aditya KuskoSpainAnna Fali PROPOSAL
Ivar PaprockiCanadaOnyama Limba UNQUALIFIED
Misaki RoysterJapanXuxue Feng NEW
Alejandro PerinJapanElwin Sharvill PROPOSAL
Jefferson SchemmerGermanyAnna Fali NEW
Darci PoquetteUnited KingdomBernardo Dominic NEGOTIATION
Silvio SlusarskiIndiaBernardo Dominic PROPOSAL
Ricardo GauchoGermanyBernardo Dominic PROPOSAL
Rodrigues CampainIndiaOnyama Limba NEW
Francesco ShinkoBrazilAsiya Javayant RENEWAL
Ashley DoeFranceXuxue Feng PROPOSAL
James ButtCanadaXuxue Feng RENEWAL
David DarakjyArgentinaAnna Fali UNQUALIFIED
Stacey MacleadBrazilStephen Shaw NEGOTIATION
Francesco ShinkoSpainAnna Fali RENEWAL
James ButtGermanyElwin Sharvill NEW
Isabel BowleyGermanyAmy Elsner QUALIFIED
Wickens NestleArgentinaIvan Magalhaes QUALIFIED
Izzy GarufiJapanElwin Sharvill RENEWAL
Murillo MaletCanadaAmy Elsner UNQUALIFIED
Nicolas IturbideRussiaAsiya Javayant QUALIFIED
Ivar PaprockiRussiaBernardo Dominic NEGOTIATION
Cody SaylorsSpainXuxue Feng QUALIFIED
Ricardo GauchoIndiaAmy Elsner NEW
Chavez BriddickAustraliaStephen Shaw QUALIFIED
David DarakjyUnited KingdomElwin Sharvill UNQUALIFIED
Clifford RimArgentinaStephen Shaw PROPOSAL
Sinclair WaycottUnited KingdomIvan Magalhaes NEGOTIATION
Leja CaldareraGermanyBernardo Dominic PROPOSAL
Ricardo GauchoIndiaXuxue Feng NEW
Juan WieserUnited KingdomElwin Sharvill RENEWAL
Murillo MaletGermanyAmy Elsner UNQUALIFIED
Aika InouyeFranceAmy Elsner PROPOSAL
Chavez BriddickAustraliaAmy Elsner NEW
Jennifer AmigonIndiaIoni Bowcher NEGOTIATION
Octavia MaletCanadaAmy Elsner NEGOTIATION
Costa DilliardItalyIoni Bowcher 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>