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
Smith GlickRussiaXuxue Feng QUALIFIED
Wickens NestleBrazilElwin Sharvill UNQUALIFIED
Costa DilliardBrazilXuxue Feng QUALIFIED
Leja CaldareraAustraliaOnyama Limba UNQUALIFIED
Salvatore StockhamFranceElwin Sharvill NEW
Morrow RutaAustraliaBernardo Dominic NEGOTIATION
Kadeem FlosiCanadaAsiya Javayant PROPOSAL
James ButtIndiaAmy Elsner PROPOSAL
Jeanfrancois VenereSpainAnna Fali RENEWAL
Tony FollerCanadaBernardo Dominic NEW
Wickens NestleBrazilOnyama Limba RENEWAL
Leon OldroydItalyBernardo Dominic UNQUALIFIED
Wickens NestleJapanAmy Elsner NEW
Clifford RimIndiaAmy Elsner QUALIFIED
Cody SaylorsCanadaIvan Magalhaes PROPOSAL
Francesco ShinkoArgentinaAmy Elsner PROPOSAL
Arvin AlbaresJapanAsiya Javayant UNQUALIFIED
Nicolas IturbideUnited KingdomAmy Elsner RENEWAL
Munro FerenczIndiaBernardo Dominic QUALIFIED
Juan WieserIndiaIoni Bowcher PROPOSAL
Emily WhobreyRussiaAmy Elsner UNQUALIFIED
Murillo MaletRussiaBernardo Dominic RENEWAL
Murillo MaletIndiaAmy Elsner NEGOTIATION
Emily WhobreyUnited KingdomAsiya Javayant NEGOTIATION
Faith GillianItalyAsiya Javayant NEGOTIATION
David DarakjyBrazilBernardo Dominic PROPOSAL
Aditya KuskoFranceAsiya Javayant PROPOSAL
Aika InouyeCanadaAmy Elsner NEW
Kaitlin OstroskyArgentinaAsiya Javayant QUALIFIED
Morrow RutaFranceAmy Elsner NEGOTIATION
Silvio SlusarskiIndiaAmy Elsner QUALIFIED
Aruna FigeroaFranceAsiya Javayant QUALIFIED
Darci PoquetteGermanyIvan Magalhaes RENEWAL
Mujtaba NickaBrazilAmy Elsner NEGOTIATION
Smith GlickArgentinaBernardo Dominic NEW
Mujtaba NickaItalyXuxue Feng PROPOSAL
Emily WhobreySpainAmy Elsner UNQUALIFIED
Julie StensethRussiaAsiya Javayant UNQUALIFIED
Octavia MaletFranceAnna Fali PROPOSAL
Cody SaylorsSpainElwin Sharvill UNQUALIFIED
Leja CaldareraIndiaOnyama Limba PROPOSAL
Ashley DoeJapanAsiya Javayant RENEWAL
Ivar PaprockiCanadaAsiya Javayant UNQUALIFIED
Ashley DoeGermanyAnna Fali PROPOSAL
Ivar PaprockiRussiaStephen Shaw QUALIFIED
Kaitlin OstroskyGermanyAnna Fali PROPOSAL
Silvio SlusarskiGermanyXuxue Feng PROPOSAL
Claire TollnerIndiaElwin Sharvill RENEWAL
Ashley DoeArgentinaStephen Shaw UNQUALIFIED
Wickens NestleCanadaAnna Fali RENEWAL
Horizontal
NameCountryRepresentativeStatus
Ashley DoeUnited KingdomAmy Elsner NEW
Aika InouyeRussiaIvan Magalhaes NEW
Julie StensethGermanyOnyama Limba QUALIFIED
Ashley DoeIndiaStephen Shaw QUALIFIED
Salvatore StockhamCanadaIoni Bowcher NEW
Mujtaba NickaBrazilAnna Fali UNQUALIFIED
Costa DilliardIndiaIoni Bowcher QUALIFIED
Darci PoquetteBrazilOnyama Limba NEGOTIATION
Ashley DoeAustraliaAmy Elsner NEW
Jefferson SchemmerArgentinaOnyama Limba NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony FollerArgentina2025-09-11Buckley Miller Wright PROPOSAL39Onyama Limba
1001Ricardo GauchoAustralia2025-09-25Truhlar And Truhlar Attys RENEWAL13Bernardo Dominic
1002Jennifer AmigonUnited Kingdom2025-09-14Buckley Miller Wright NEW15Bernardo Dominic
1003Francesco ShinkoFrance2025-09-21Chemel, James L Cpa QUALIFIED99Ioni Bowcher
1004Munro FerenczJapan2025-09-14Commercial Press UNQUALIFIED35Stephen Shaw
1005Kaitlin OstroskyUnited Kingdom2025-09-12Dorl, James J Esq RENEWAL88Bernardo Dominic
1006Adams MorascaGermany2025-09-04Feltz Printing Service PROPOSAL28Bernardo Dominic
1007Jefferson SchemmerArgentina2025-09-18Feltz Printing Service NEW47Elwin Sharvill
1008Jefferson SchemmerAustralia2025-09-01Rousseaux, Michael Esq UNQUALIFIED86Asiya Javayant
1009Mujtaba NickaAustralia2025-09-10Dorl, James J Esq QUALIFIED80Elwin Sharvill
1010Jennifer AmigonItaly2025-09-19Benton, John B Jr UNQUALIFIED39Onyama Limba
1011Munro FerenczArgentina2025-09-11King, Christopher A Esq PROPOSAL20Amy Elsner
1012Alejandro PerinCanada2025-09-16Rangoni Of Florence QUALIFIED96Onyama Limba
1013Sinclair WaycottCanada2025-09-01Buckley Miller Wright QUALIFIED33Amy Elsner
1014Alejandro PerinIndia2025-09-17Benton, John B Jr UNQUALIFIED25Ioni Bowcher
1015Sinclair WaycottRussia2025-09-11Chemel, James L Cpa UNQUALIFIED21Anna Fali
1016Juan WieserGermany2025-09-14Benton, John B Jr NEW98Ioni Bowcher
1017Tony FollerUnited Kingdom2025-09-18Truhlar And Truhlar Attys NEW13Asiya Javayant
1018Darci PoquetteSpain2025-09-18Feltz Printing Service PROPOSAL55Xuxue Feng
1019Wickens NestleCanada2025-09-06Morlong Associates PROPOSAL98Amy Elsner
1020Adams MorascaCanada2025-09-05Feltz Printing Service UNQUALIFIED47Anna Fali
1021Kadeem FlosiIndia2025-08-30King, Christopher A Esq NEGOTIATION67Bernardo Dominic
1022Aruna FigeroaRussia2025-09-02Rangoni Of Florence RENEWAL22Elwin Sharvill
1023James ButtArgentina2025-09-09Feltz Printing Service UNQUALIFIED58Elwin Sharvill
1024Costa DilliardRussia2025-09-23Dorl, James J Esq RENEWAL99Bernardo Dominic
1025Cody SaylorsBrazil2025-09-06Chanay, Jeffrey A Esq PROPOSAL1Ioni Bowcher
1026Ricardo GauchoSpain2025-09-13King, Christopher A Esq RENEWAL84Onyama Limba
1027Clifford RimCanada2025-09-14Truhlar And Truhlar Attys UNQUALIFIED85Bernardo Dominic
1028Claire TollnerBrazil2025-09-14Commercial Press RENEWAL57Elwin Sharvill
1029Isabel BowleyCanada2025-09-05Dorl, James J Esq UNQUALIFIED49Elwin Sharvill
1030Francesco ShinkoFrance2025-09-02Truhlar And Truhlar Attys NEGOTIATION85Onyama Limba
1031Juan WieserCanada2025-09-19Chanay, Jeffrey A Esq PROPOSAL43Bernardo Dominic
1032Mujtaba NickaItaly2025-09-04Feiner Bros RENEWAL75Ivan Magalhaes
1033David DarakjyJapan2025-09-24Chanay, Jeffrey A Esq RENEWAL55Elwin Sharvill
1034Leja CaldareraGermany2025-08-28Benton, John B Jr UNQUALIFIED20Xuxue Feng
1035Salvatore StockhamGermany2025-08-29Rousseaux, Michael Esq UNQUALIFIED13Ivan Magalhaes
1036Nicolas IturbideRussia2025-09-04Chapman, Ross E Esq UNQUALIFIED11Onyama Limba
1037Stacey MacleadSpain2025-09-04Dorl, James J Esq QUALIFIED92Anna Fali
1038Leja CaldareraGermany2025-09-01Dorl, James J Esq NEGOTIATION89Bernardo Dominic
1039Aika InouyeIndia2025-09-10Printing Dimensions QUALIFIED67Asiya Javayant
1040Arvin AlbaresJapan2025-09-06Chapman, Ross E Esq QUALIFIED72Stephen Shaw
1041Francesco ShinkoUnited Kingdom2025-09-14Rangoni Of Florence RENEWAL90Elwin Sharvill
1042Alejandro PerinFrance2025-09-20Commercial Press QUALIFIED1Bernardo Dominic
1043Wickens NestleIndia2025-09-12Buckley Miller Wright NEGOTIATION76Amy Elsner
1044Jeanfrancois VenereItaly2025-08-28Feltz Printing Service NEGOTIATION57Stephen Shaw
1045Deepesh ChuiUnited Kingdom2025-09-24Truhlar And Truhlar Attys UNQUALIFIED57Onyama Limba
1046Jennifer AmigonAustralia2025-09-06Chanay, Jeffrey A Esq NEGOTIATION55Anna Fali
1047Smith GlickAustralia2025-09-07Feltz Printing Service QUALIFIED72Asiya Javayant
1048Munro FerenczGermany2025-09-23Rangoni Of Florence NEGOTIATION29Asiya Javayant
1049Aditya KuskoSpain2025-09-24Benton, John B Jr PROPOSAL31Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Tony FollerIndiaAsiya Javayant QUALIFIED
Maisha RulapaughArgentinaElwin Sharvill UNQUALIFIED
Alejandro PerinGermanyStephen Shaw NEGOTIATION
Deepesh ChuiGermanyAmy Elsner UNQUALIFIED
Jeanfrancois VenereRussiaAmy Elsner PROPOSAL
Faith GillianSpainBernardo Dominic QUALIFIED
Octavia MaletCanadaAsiya Javayant NEGOTIATION
Salvatore StockhamCanadaAsiya Javayant QUALIFIED
Leon OldroydBrazilBernardo Dominic UNQUALIFIED
Morrow RutaItalyElwin Sharvill RENEWAL
Salvatore StockhamRussiaAmy Elsner PROPOSAL
Rodrigues CampainArgentinaXuxue Feng QUALIFIED
Munro FerenczSpainXuxue Feng RENEWAL
Faith GillianSpainIvan Magalhaes QUALIFIED
Morrow RutaSpainAsiya Javayant NEGOTIATION
Leon OldroydArgentinaAsiya Javayant NEGOTIATION
Munro FerenczBrazilIoni Bowcher NEW
Nicolas IturbideUnited KingdomOnyama Limba NEW
Misaki RoysterUnited KingdomStephen Shaw RENEWAL
Rodrigues CampainGermanyBernardo Dominic PROPOSAL
Sinclair WaycottItalyAsiya Javayant NEGOTIATION
Salvatore StockhamGermanyXuxue Feng NEW
Ashley DoeCanadaOnyama Limba PROPOSAL
Cody SaylorsAustraliaAsiya Javayant RENEWAL
Juan WieserJapanIvan Magalhaes NEW
Maisha RulapaughIndiaAsiya Javayant UNQUALIFIED
Leja CaldareraFranceAsiya Javayant QUALIFIED
Kaitlin OstroskyAustraliaXuxue Feng UNQUALIFIED
Ivar PaprockiAustraliaAnna Fali NEW
Ricardo GauchoUnited KingdomIoni Bowcher NEW
Darci PoquetteGermanyOnyama Limba UNQUALIFIED
Silvio SlusarskiJapanElwin Sharvill RENEWAL
David DarakjyJapanIvan Magalhaes QUALIFIED
Cody SaylorsAustraliaBernardo Dominic QUALIFIED
Maria MarrierSpainAsiya Javayant UNQUALIFIED
Costa DilliardSpainStephen Shaw NEGOTIATION
Jones VocelkaIndiaIvan Magalhaes NEGOTIATION
Cody SaylorsArgentinaBernardo Dominic NEW
Maisha RulapaughCanadaStephen Shaw NEGOTIATION
Mujtaba NickaRussiaIvan Magalhaes RENEWAL
Julie StensethFranceElwin Sharvill PROPOSAL
Wickens NestleBrazilOnyama Limba NEW
Smith GlickItalyBernardo Dominic UNQUALIFIED
Kadeem FlosiIndiaBernardo Dominic UNQUALIFIED
Antonio CaudyFranceBernardo Dominic NEW
Kadeem FlosiGermanyIoni Bowcher RENEWAL
Isabel BowleyGermanyAmy Elsner NEGOTIATION
Sinclair WaycottGermanyIvan Magalhaes QUALIFIED
Ashley DoeRussiaIvan Magalhaes NEW
Wickens NestleSpainXuxue Feng NEGOTIATION
Frozen Columns
Name
Deepesh Chui
Tony Foller
Sinclair Waycott
James Butt
Isabel Bowley
Julie Stenseth
Maria Marrier
Tony Foller
Ashley Doe
Jones Vocelka
Faith Gillian
Izzy Garufi
Leja Caldarera
Jeanfrancois Venere
Morrow Ruta
Costa Dilliard
Antonio Caudy
Chavez Briddick
Silvio Slusarski
Munro Ferencz
Adams Morasca
James Butt
Aruna Figeroa
Isabel Bowley
Kaitlin Ostrosky
Greenwood Bolognia
Maisha Rulapaugh
Wickens Nestle
Munro Ferencz
Mujtaba Nicka
Johnson Sergi
Jeanfrancois Venere
Claire Tollner
Greenwood Bolognia
Claire Tollner
Stacey Maclead
Leja Caldarera
Tony Foller
Morrow Ruta
Rodrigues Campain
Izzy Garufi
Munro Ferencz
Maisha Rulapaugh
Julie Stenseth
Claire Tollner
Deepesh Chui
Julie Stenseth
Mujtaba Nicka
Octavia Malet
Arvin Albares
IdCountryDate
1000Brazil2025-09-26
1001Brazil2025-09-20
1002India2025-09-20
1003Japan2025-09-17
1004Brazil2025-09-26
1005Spain2025-09-07
1006Canada2025-09-05
1007Japan2025-09-17
1008Canada2025-09-10
1009Germany2025-09-03
1010Italy2025-09-22
1011Australia2025-09-06
1012United Kingdom2025-09-13
1013Brazil2025-09-04
1014Brazil2025-09-19
1015United Kingdom2025-09-17
1016United Kingdom2025-08-28
1017Brazil2025-09-09
1018Canada2025-08-29
1019Brazil2025-09-16
1020Spain2025-09-10
1021Australia2025-09-25
1022India2025-09-05
1023India2025-08-29
1024India2025-09-10
1025France2025-09-07
1026Spain2025-09-02
1027Japan2025-09-07
1028France2025-09-13
1029India2025-08-28
1030Germany2025-09-03
1031Japan2025-08-28
1032Russia2025-09-10
1033Argentina2025-09-02
1034Canada2025-09-24
1035Spain2025-09-18
1036Russia2025-09-10
1037Russia2025-08-31
1038France2025-09-20
1039Russia2025-09-21
1040Germany2025-09-10
1041Canada2025-09-13
1042Japan2025-09-20
1043Germany2025-09-10
1044Italy2025-09-24
1045Brazil2025-09-19
1046Italy2025-09-17
1047Canada2025-09-10
1048Canada2025-09-11
1049Canada2025-09-21

On-Demand Data

NameIdCountryDate
Alejandro Perin1000Italy2025-09-25
Murillo Malet1001Japan2025-08-29
Claire Tollner1002United Kingdom2025-09-14
Aditya Kusko1003India2025-09-07
David Darakjy1004Canada2025-09-23
Isabel Bowley1005Australia2025-09-06
Jeanfrancois Venere1006Germany2025-09-21
Octavia Malet1007Russia2025-09-22
James Butt1008Japan2025-09-24
Juan Wieser1009Brazil2025-09-23
Aditya Kusko1010Spain2025-09-03
Leja Caldarera1011Russia2025-09-15
Adams Morasca1012Australia2025-09-01
Isabel Bowley1013Spain2025-09-16
Deepesh Chui1014United Kingdom2025-09-12
Ricardo Gaucho1015Italy2025-09-23
Chavez Briddick1016Japan2025-09-14
Chavez Briddick1017Japan2025-09-13
Adams Morasca1018Japan2025-09-01
Costa Dilliard1019India2025-09-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore StockhamSpainStephen Shaw RENEWAL
Murillo MaletAustraliaAsiya Javayant NEGOTIATION
Munro FerenczAustraliaAnna Fali RENEWAL
Mujtaba NickaIndiaOnyama Limba QUALIFIED
Munro FerenczIndiaAmy Elsner NEGOTIATION
Arvin AlbaresRussiaElwin Sharvill NEW
Greenwood BologniaFranceIvan Magalhaes QUALIFIED
Jefferson SchemmerBrazilAmy Elsner RENEWAL
Antonio CaudyFranceElwin Sharvill NEW
Kaitlin OstroskyCanadaElwin Sharvill UNQUALIFIED
Morrow RutaBrazilIvan Magalhaes PROPOSAL
Jones VocelkaRussiaAnna Fali QUALIFIED
Octavia MaletJapanAnna Fali QUALIFIED
Stacey MacleadGermanyAsiya Javayant RENEWAL
Jefferson SchemmerSpainBernardo Dominic NEW
Greenwood BologniaItalyAsiya Javayant NEGOTIATION
Aditya KuskoCanadaAsiya Javayant UNQUALIFIED
Mayumi KolmetzItalyBernardo Dominic UNQUALIFIED
Tony FollerGermanyOnyama Limba UNQUALIFIED
Adams MorascaUnited KingdomElwin Sharvill NEGOTIATION
Jefferson SchemmerArgentinaStephen Shaw NEW
Ivar PaprockiItalyIvan Magalhaes UNQUALIFIED
Antonio CaudyArgentinaAnna Fali QUALIFIED
Leon OldroydAustraliaElwin Sharvill NEW
Faith GillianGermanyElwin Sharvill UNQUALIFIED
Greenwood BologniaFranceStephen Shaw QUALIFIED
Rodrigues CampainBrazilStephen Shaw RENEWAL
Jeanfrancois VenereArgentinaIvan Magalhaes NEW
Wickens NestleFranceXuxue Feng PROPOSAL
Isabel BowleyIndiaXuxue Feng RENEWAL
Smith GlickBrazilIoni Bowcher RENEWAL
Murillo MaletJapanBernardo Dominic RENEWAL
Octavia MaletRussiaAsiya Javayant RENEWAL
Ricardo GauchoUnited KingdomAsiya Javayant RENEWAL
Leon OldroydGermanyElwin Sharvill UNQUALIFIED
Emily WhobreyUnited KingdomElwin Sharvill NEGOTIATION
Smith GlickCanadaAmy Elsner PROPOSAL
Rodrigues CampainSpainBernardo Dominic UNQUALIFIED
David DarakjyRussiaXuxue Feng RENEWAL
Morrow RutaJapanBernardo Dominic 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>