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
Stacey MacleadJapanAsiya Javayant NEGOTIATION
Octavia MaletIndiaXuxue Feng PROPOSAL
Adams MorascaSpainAmy Elsner NEGOTIATION
Rodrigues CampainFranceAmy Elsner QUALIFIED
Misaki RoysterJapanStephen Shaw NEGOTIATION
Juan WieserItalyXuxue Feng NEGOTIATION
Alejandro PerinSpainBernardo Dominic PROPOSAL
Maria MarrierCanadaOnyama Limba RENEWAL
Aika InouyeItalyElwin Sharvill PROPOSAL
Aika InouyeIndiaXuxue Feng UNQUALIFIED
Kadeem FlosiItalyStephen Shaw UNQUALIFIED
Kadeem FlosiBrazilIoni Bowcher RENEWAL
Claire TollnerGermanyIvan Magalhaes NEW
Salvatore StockhamIndiaStephen Shaw NEW
Jefferson SchemmerFranceElwin Sharvill PROPOSAL
Smith GlickUnited KingdomStephen Shaw RENEWAL
Jennifer AmigonJapanOnyama Limba QUALIFIED
Jennifer AmigonFranceAsiya Javayant NEGOTIATION
Antonio CaudyRussiaIoni Bowcher UNQUALIFIED
David DarakjyGermanyStephen Shaw NEGOTIATION
Sinclair WaycottItalyAmy Elsner NEGOTIATION
Faith GillianIndiaAsiya Javayant UNQUALIFIED
Stacey MacleadJapanAsiya Javayant RENEWAL
Arvin AlbaresJapanOnyama Limba UNQUALIFIED
Greenwood BologniaIndiaIvan Magalhaes NEW
Aditya KuskoRussiaAmy Elsner UNQUALIFIED
Jeanfrancois VenereUnited KingdomXuxue Feng NEW
Juan WieserBrazilAnna Fali NEW
Aditya KuskoJapanIoni Bowcher NEGOTIATION
Francesco ShinkoArgentinaElwin Sharvill UNQUALIFIED
David DarakjyIndiaElwin Sharvill NEW
Chavez BriddickGermanyIvan Magalhaes NEGOTIATION
Faith GillianUnited KingdomIvan Magalhaes QUALIFIED
Mayumi KolmetzArgentinaIoni Bowcher NEGOTIATION
Emily WhobreyJapanAmy Elsner PROPOSAL
Aika InouyeSpainElwin Sharvill UNQUALIFIED
Morrow RutaUnited KingdomIvan Magalhaes RENEWAL
Faith GillianRussiaStephen Shaw QUALIFIED
Juan WieserCanadaIvan Magalhaes NEGOTIATION
Ashley DoeBrazilIvan Magalhaes QUALIFIED
Kaitlin OstroskyArgentinaElwin Sharvill NEGOTIATION
Jones VocelkaArgentinaIvan Magalhaes NEGOTIATION
Juan WieserJapanElwin Sharvill NEW
Jeanfrancois VenereArgentinaXuxue Feng UNQUALIFIED
Leja CaldareraBrazilStephen Shaw PROPOSAL
Izzy GarufiItalyAsiya Javayant NEGOTIATION
Kadeem FlosiArgentinaOnyama Limba RENEWAL
Murillo MaletRussiaAmy Elsner PROPOSAL
Mujtaba NickaIndiaBernardo Dominic NEGOTIATION
Salvatore StockhamFranceIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Maisha RulapaughCanadaBernardo Dominic QUALIFIED
Kaitlin OstroskyAustraliaBernardo Dominic UNQUALIFIED
Arvin AlbaresBrazilOnyama Limba UNQUALIFIED
Ashley DoeItalyIoni Bowcher NEW
Stacey MacleadBrazilBernardo Dominic QUALIFIED
Kaitlin OstroskyJapanXuxue Feng RENEWAL
Salvatore StockhamRussiaIvan Magalhaes NEGOTIATION
Juan WieserRussiaIvan Magalhaes NEW
Izzy GarufiArgentinaElwin Sharvill QUALIFIED
Isabel BowleyItalyStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jeanfrancois VenereBrazil2026-05-01Rousseaux, Michael Esq QUALIFIED97Xuxue Feng
1001Leon OldroydFrance2026-05-05Chapman, Ross E Esq NEW83Stephen Shaw
1002Costa DilliardAustralia2026-04-28Truhlar And Truhlar Attys RENEWAL20Anna Fali
1003Izzy GarufiItaly2026-04-22Rousseaux, Michael Esq NEGOTIATION80Onyama Limba
1004Jefferson SchemmerAustralia2026-04-30Dorl, James J Esq NEGOTIATION78Asiya Javayant
1005Costa DilliardCanada2026-05-04Rangoni Of Florence QUALIFIED75Bernardo Dominic
1006Arvin AlbaresFrance2026-05-02Feltz Printing Service NEW36Anna Fali
1007Misaki RoysterAustralia2026-05-05Benton, John B Jr NEGOTIATION42Ivan Magalhaes
1008Aika InouyeIndia2026-05-10Chapman, Ross E Esq QUALIFIED69Elwin Sharvill
1009Murillo MaletIndia2026-05-15Printing Dimensions UNQUALIFIED39Asiya Javayant
1010Kadeem FlosiUnited Kingdom2026-04-22Morlong Associates NEGOTIATION85Ioni Bowcher
1011Adams MorascaAustralia2026-05-11Feiner Bros PROPOSAL4Asiya Javayant
1012Ivar PaprockiIndia2026-05-02Feiner Bros PROPOSAL10Anna Fali
1013James ButtArgentina2026-04-27King, Christopher A Esq PROPOSAL88Bernardo Dominic
1014Leon OldroydArgentina2026-04-29Rangoni Of Florence NEW38Ioni Bowcher
1015Aruna FigeroaUnited Kingdom2026-05-05Morlong Associates QUALIFIED76Stephen Shaw
1016Murillo MaletSpain2026-05-07Commercial Press NEGOTIATION89Anna Fali
1017Octavia MaletJapan2026-04-28Printing Dimensions PROPOSAL70Amy Elsner
1018Jones VocelkaItaly2026-04-26Rangoni Of Florence PROPOSAL1Amy Elsner
1019Faith GillianBrazil2026-04-23Benton, John B Jr UNQUALIFIED99Asiya Javayant
1020Arvin AlbaresRussia2026-05-01Commercial Press RENEWAL57Elwin Sharvill
1021Darci PoquetteItaly2026-04-21Chanay, Jeffrey A Esq RENEWAL72Anna Fali
1022Stacey MacleadItaly2026-04-20Dorl, James J Esq QUALIFIED4Stephen Shaw
1023Stacey MacleadCanada2026-04-23Printing Dimensions QUALIFIED4Ivan Magalhaes
1024Munro FerenczGermany2026-05-07Benton, John B Jr UNQUALIFIED8Amy Elsner
1025Ashley DoeSpain2026-05-13Chemel, James L Cpa PROPOSAL6Anna Fali
1026Ricardo GauchoUnited Kingdom2026-04-23Feiner Bros QUALIFIED70Ivan Magalhaes
1027Nicolas IturbideUnited Kingdom2026-04-29Feltz Printing Service QUALIFIED64Ivan Magalhaes
1028James ButtFrance2026-05-14Commercial Press NEGOTIATION78Anna Fali
1029Aditya KuskoUnited Kingdom2026-05-05Chanay, Jeffrey A Esq RENEWAL30Ioni Bowcher
1030Kaitlin OstroskySpain2026-05-12Commercial Press NEGOTIATION1Onyama Limba
1031Misaki RoysterCanada2026-04-25Dorl, James J Esq NEW48Onyama Limba
1032Jeanfrancois VenereCanada2026-04-25Buckley Miller Wright UNQUALIFIED7Ivan Magalhaes
1033Mayumi KolmetzAustralia2026-04-23Rangoni Of Florence NEW8Onyama Limba
1034Tony FollerItaly2026-05-06Truhlar And Truhlar Attys NEGOTIATION62Amy Elsner
1035Ivar PaprockiItaly2026-04-16Rangoni Of Florence QUALIFIED68Amy Elsner
1036Adams MorascaBrazil2026-04-24Feiner Bros NEGOTIATION67Ioni Bowcher
1037Morrow RutaBrazil2026-05-08Chapman, Ross E Esq PROPOSAL50Stephen Shaw
1038Ashley DoeCanada2026-04-21Printing Dimensions UNQUALIFIED50Bernardo Dominic
1039Mujtaba NickaBrazil2026-04-19Feltz Printing Service NEGOTIATION75Elwin Sharvill
1040Jefferson SchemmerSpain2026-04-16Truhlar And Truhlar Attys PROPOSAL81Anna Fali
1041Leon OldroydCanada2026-05-02King, Christopher A Esq QUALIFIED60Amy Elsner
1042Kadeem FlosiAustralia2026-05-08Rousseaux, Michael Esq RENEWAL49Ivan Magalhaes
1043Tony FollerJapan2026-04-29Chanay, Jeffrey A Esq NEGOTIATION20Onyama Limba
1044Darci PoquetteBrazil2026-05-11Feiner Bros NEW7Bernardo Dominic
1045Arvin AlbaresUnited Kingdom2026-04-17Chemel, James L Cpa NEW79Bernardo Dominic
1046Leja CaldareraAustralia2026-04-23Commercial Press QUALIFIED81Stephen Shaw
1047Costa DilliardBrazil2026-04-17Truhlar And Truhlar Attys NEGOTIATION12Amy Elsner
1048Francesco ShinkoUnited Kingdom2026-05-15Dorl, James J Esq PROPOSAL23Ivan Magalhaes
1049Jeanfrancois VenereJapan2026-04-26Chemel, James L Cpa RENEWAL58Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Jeanfrancois VenereSpainOnyama Limba PROPOSAL
Emily WhobreySpainXuxue Feng PROPOSAL
Rodrigues CampainJapanIoni Bowcher PROPOSAL
Claire TollnerBrazilAnna Fali NEGOTIATION
Murillo MaletJapanElwin Sharvill NEGOTIATION
Sinclair WaycottJapanStephen Shaw QUALIFIED
Kadeem FlosiArgentinaStephen Shaw NEW
Ricardo GauchoRussiaStephen Shaw QUALIFIED
Jefferson SchemmerIndiaIvan Magalhaes PROPOSAL
Ashley DoeBrazilStephen Shaw PROPOSAL
Jennifer AmigonAustraliaAnna Fali RENEWAL
Leja CaldareraGermanyAsiya Javayant NEW
Tony FollerUnited KingdomStephen Shaw PROPOSAL
Murillo MaletItalyIoni Bowcher QUALIFIED
Alejandro PerinJapanOnyama Limba UNQUALIFIED
Isabel BowleySpainBernardo Dominic NEGOTIATION
Antonio CaudyIndiaBernardo Dominic NEW
Sinclair WaycottItalyAmy Elsner QUALIFIED
Antonio CaudySpainIoni Bowcher UNQUALIFIED
Sinclair WaycottJapanStephen Shaw NEGOTIATION
Salvatore StockhamBrazilIoni Bowcher PROPOSAL
Aditya KuskoIndiaOnyama Limba NEW
Jeanfrancois VenereItalyBernardo Dominic PROPOSAL
Munro FerenczBrazilAmy Elsner RENEWAL
Nicolas IturbideArgentinaOnyama Limba UNQUALIFIED
Mujtaba NickaArgentinaIoni Bowcher RENEWAL
Ricardo GauchoArgentinaAnna Fali UNQUALIFIED
Aika InouyeUnited KingdomAmy Elsner UNQUALIFIED
Faith GillianArgentinaAmy Elsner PROPOSAL
Jones VocelkaGermanyAnna Fali QUALIFIED
Nicolas IturbideItalyXuxue Feng PROPOSAL
Munro FerenczRussiaIoni Bowcher NEW
Smith GlickRussiaIoni Bowcher NEW
Mayumi KolmetzJapanBernardo Dominic UNQUALIFIED
Silvio SlusarskiGermanyAsiya Javayant UNQUALIFIED
Jennifer AmigonItalyElwin Sharvill NEW
Aruna FigeroaGermanyOnyama Limba NEW
Aika InouyeFranceXuxue Feng RENEWAL
Sinclair WaycottFranceStephen Shaw QUALIFIED
Deepesh ChuiIndiaAmy Elsner QUALIFIED
Francesco ShinkoAustraliaAmy Elsner RENEWAL
Clifford RimJapanOnyama Limba NEGOTIATION
Smith GlickAustraliaStephen Shaw UNQUALIFIED
Tony FollerJapanAnna Fali NEW
Jennifer AmigonIndiaIvan Magalhaes RENEWAL
Cody SaylorsGermanyIvan Magalhaes UNQUALIFIED
Francesco ShinkoIndiaIvan Magalhaes QUALIFIED
Murillo MaletJapanAmy Elsner PROPOSAL
Francesco ShinkoJapanElwin Sharvill PROPOSAL
Maisha RulapaughAustraliaXuxue Feng PROPOSAL
Frozen Columns
Name
Faith Gillian
Smith Glick
Leon Oldroyd
Salvatore Stockham
Greenwood Bolognia
Costa Dilliard
Arvin Albares
Francesco Shinko
Juan Wieser
David Darakjy
Francesco Shinko
Morrow Ruta
Cody Saylors
Ivar Paprocki
Wickens Nestle
Adams Morasca
Tony Foller
Chavez Briddick
Nicolas Iturbide
Izzy Garufi
Leon Oldroyd
Mayumi Kolmetz
Misaki Royster
Antonio Caudy
Izzy Garufi
Isabel Bowley
Izzy Garufi
Salvatore Stockham
Kadeem Flosi
Antonio Caudy
Antonio Caudy
Wickens Nestle
Francesco Shinko
Aika Inouye
Salvatore Stockham
Rodrigues Campain
Jennifer Amigon
Morrow Ruta
Kadeem Flosi
Juan Wieser
Faith Gillian
Izzy Garufi
Juan Wieser
Juan Wieser
Antonio Caudy
Johnson Sergi
Arvin Albares
James Butt
Emily Whobrey
Leja Caldarera
IdCountryDate
1000Canada2026-04-25
1001Australia2026-05-14
1002India2026-04-21
1003India2026-04-17
1004United Kingdom2026-05-05
1005Argentina2026-04-24
1006Italy2026-05-07
1007Canada2026-05-12
1008India2026-04-30
1009India2026-04-20
1010Brazil2026-05-03
1011Argentina2026-04-21
1012United Kingdom2026-04-23
1013Spain2026-05-11
1014Spain2026-04-22
1015India2026-05-10
1016Spain2026-05-06
1017Brazil2026-05-15
1018Argentina2026-04-28
1019Australia2026-04-20
1020France2026-04-22
1021India2026-04-19
1022Russia2026-04-24
1023United Kingdom2026-04-27
1024United Kingdom2026-04-18
1025Brazil2026-05-09
1026Australia2026-04-29
1027Canada2026-05-04
1028Japan2026-05-02
1029Germany2026-05-03
1030Germany2026-04-18
1031Canada2026-05-06
1032Argentina2026-04-18
1033Russia2026-04-18
1034Italy2026-04-30
1035Argentina2026-05-01
1036Australia2026-04-29
1037Spain2026-05-04
1038Canada2026-04-20
1039Argentina2026-05-07
1040Japan2026-05-09
1041Russia2026-05-09
1042Germany2026-04-29
1043Germany2026-05-13
1044Russia2026-05-04
1045Germany2026-05-14
1046India2026-05-10
1047Brazil2026-04-18
1048Spain2026-04-24
1049Brazil2026-04-27

On-Demand Data

NameIdCountryDate
James Butt1000Spain2026-05-11
Costa Dilliard1001Canada2026-04-29
Chavez Briddick1002Russia2026-04-20
Alejandro Perin1003Italy2026-04-19
Mujtaba Nicka1004France2026-05-11
Arvin Albares1005Argentina2026-05-11
Deepesh Chui1006India2026-04-18
Juan Wieser1007United Kingdom2026-04-20
Darci Poquette1008Russia2026-05-11
Aruna Figeroa1009France2026-05-09
Cody Saylors1010United Kingdom2026-05-02
Alejandro Perin1011Canada2026-05-12
Stacey Maclead1012United Kingdom2026-04-28
Munro Ferencz1013Australia2026-04-24
Ashley Doe1014Italy2026-04-23
Jefferson Schemmer1015Italy2026-05-14
Mayumi Kolmetz1016Germany2026-05-01
Morrow Ruta1017United Kingdom2026-05-07
Octavia Malet1018Spain2026-04-28
Mujtaba Nicka1019India2026-05-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maisha RulapaughRussiaAsiya Javayant UNQUALIFIED
Faith GillianBrazilBernardo Dominic NEGOTIATION
Costa DilliardItalyAnna Fali RENEWAL
Aditya KuskoGermanyAmy Elsner QUALIFIED
Claire TollnerAustraliaElwin Sharvill NEW
Stacey MacleadUnited KingdomIoni Bowcher NEW
Arvin AlbaresFranceOnyama Limba NEGOTIATION
Juan WieserJapanIoni Bowcher QUALIFIED
Rodrigues CampainFranceAnna Fali PROPOSAL
Cody SaylorsCanadaBernardo Dominic RENEWAL
Deepesh ChuiItalyIvan Magalhaes QUALIFIED
Leon OldroydRussiaElwin Sharvill UNQUALIFIED
Wickens NestleItalyElwin Sharvill PROPOSAL
Murillo MaletItalyAsiya Javayant QUALIFIED
Octavia MaletUnited KingdomAmy Elsner RENEWAL
Ashley DoeRussiaElwin Sharvill UNQUALIFIED
Jennifer AmigonSpainOnyama Limba NEW
Darci PoquetteSpainIvan Magalhaes NEGOTIATION
Juan WieserFranceStephen Shaw QUALIFIED
Mujtaba NickaBrazilAmy Elsner RENEWAL
Leja CaldareraBrazilAmy Elsner PROPOSAL
Maria MarrierGermanyIvan Magalhaes RENEWAL
Tony FollerCanadaXuxue Feng NEGOTIATION
Clifford RimFranceAnna Fali RENEWAL
Kaitlin OstroskyGermanyElwin Sharvill RENEWAL
Julie StensethIndiaStephen Shaw RENEWAL
Jones VocelkaIndiaXuxue Feng UNQUALIFIED
Alejandro PerinSpainIoni Bowcher RENEWAL
Isabel BowleyJapanIoni Bowcher QUALIFIED
Clifford RimJapanIvan Magalhaes NEGOTIATION
Antonio CaudyAustraliaElwin Sharvill RENEWAL
Antonio CaudyFranceOnyama Limba NEGOTIATION
Misaki RoysterFranceAsiya Javayant QUALIFIED
Jeanfrancois VenereCanadaIoni Bowcher QUALIFIED
Nicolas IturbideBrazilBernardo Dominic PROPOSAL
Isabel BowleyFranceStephen Shaw NEGOTIATION
Mayumi KolmetzJapanIoni Bowcher QUALIFIED
Claire TollnerJapanXuxue Feng QUALIFIED
Alejandro PerinJapanOnyama Limba QUALIFIED
Misaki RoysterBrazilOnyama 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>