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 FigeroaGermanyIvan Magalhaes RENEWAL
Johnson SergiRussiaAsiya Javayant NEGOTIATION
Salvatore StockhamItalyAnna Fali UNQUALIFIED
Misaki RoysterUnited KingdomStephen Shaw RENEWAL
Ashley DoeArgentinaBernardo Dominic RENEWAL
Izzy GarufiArgentinaAnna Fali QUALIFIED
Nicolas IturbideFranceAsiya Javayant RENEWAL
Sinclair WaycottAustraliaBernardo Dominic QUALIFIED
Maisha RulapaughIndiaIvan Magalhaes NEGOTIATION
Claire TollnerIndiaBernardo Dominic NEW
Silvio SlusarskiFranceIvan Magalhaes NEGOTIATION
Adams MorascaRussiaAsiya Javayant UNQUALIFIED
Ricardo GauchoArgentinaXuxue Feng QUALIFIED
Leja CaldareraIndiaOnyama Limba PROPOSAL
Misaki RoysterAustraliaAmy Elsner NEGOTIATION
Aika InouyeAustraliaAsiya Javayant RENEWAL
Isabel BowleySpainAnna Fali UNQUALIFIED
Nicolas IturbideFranceElwin Sharvill QUALIFIED
Ivar PaprockiUnited KingdomXuxue Feng UNQUALIFIED
Julie StensethSpainXuxue Feng UNQUALIFIED
Juan WieserSpainIoni Bowcher QUALIFIED
Emily WhobreySpainXuxue Feng QUALIFIED
Smith GlickUnited KingdomOnyama Limba QUALIFIED
Darci PoquetteArgentinaBernardo Dominic RENEWAL
Aditya KuskoCanadaAsiya Javayant QUALIFIED
Munro FerenczRussiaElwin Sharvill UNQUALIFIED
Aika InouyeGermanyBernardo Dominic PROPOSAL
Antonio CaudyBrazilBernardo Dominic NEW
David DarakjyItalyIvan Magalhaes RENEWAL
Kadeem FlosiAustraliaAmy Elsner PROPOSAL
Salvatore StockhamBrazilStephen Shaw NEW
Silvio SlusarskiUnited KingdomAmy Elsner NEGOTIATION
Deepesh ChuiSpainBernardo Dominic NEGOTIATION
Costa DilliardUnited KingdomOnyama Limba PROPOSAL
Tony FollerCanadaBernardo Dominic PROPOSAL
David DarakjyGermanyIvan Magalhaes UNQUALIFIED
Darci PoquetteJapanBernardo Dominic UNQUALIFIED
Izzy GarufiUnited KingdomAmy Elsner QUALIFIED
Chavez BriddickSpainStephen Shaw NEW
Tony FollerAustraliaIvan Magalhaes QUALIFIED
Darci PoquetteCanadaXuxue Feng UNQUALIFIED
Deepesh ChuiAustraliaXuxue Feng NEW
Jeanfrancois VenereJapanIvan Magalhaes PROPOSAL
Leon OldroydGermanyIvan Magalhaes RENEWAL
Silvio SlusarskiBrazilAsiya Javayant QUALIFIED
Stacey MacleadItalyStephen Shaw UNQUALIFIED
Rodrigues CampainArgentinaOnyama Limba RENEWAL
Deepesh ChuiUnited KingdomElwin Sharvill NEW
Jefferson SchemmerGermanyIvan Magalhaes UNQUALIFIED
Adams MorascaJapanIvan Magalhaes NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Jennifer AmigonArgentinaAsiya Javayant RENEWAL
Morrow RutaSpainOnyama Limba UNQUALIFIED
Salvatore StockhamUnited KingdomOnyama Limba UNQUALIFIED
Munro FerenczAustraliaAmy Elsner PROPOSAL
Jeanfrancois VenereBrazilIoni Bowcher UNQUALIFIED
Julie StensethItalyXuxue Feng UNQUALIFIED
Wickens NestleJapanXuxue Feng QUALIFIED
Morrow RutaBrazilIoni Bowcher NEGOTIATION
David DarakjyArgentinaStephen Shaw NEW
Faith GillianArgentinaXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues CampainUnited Kingdom2026-04-11Dorl, James J Esq PROPOSAL79Onyama Limba
1001Izzy GarufiCanada2026-04-14Feltz Printing Service QUALIFIED36Ioni Bowcher
1002Adams MorascaUnited Kingdom2026-03-31Chemel, James L Cpa RENEWAL28Asiya Javayant
1003Salvatore StockhamGermany2026-04-15Rousseaux, Michael Esq RENEWAL91Asiya Javayant
1004Smith GlickCanada2026-04-01King, Christopher A Esq QUALIFIED53Ivan Magalhaes
1005Deepesh ChuiGermany2026-04-20Printing Dimensions PROPOSAL34Xuxue Feng
1006Nicolas IturbideAustralia2026-04-22Printing Dimensions RENEWAL69Asiya Javayant
1007Maisha RulapaughGermany2026-04-05Chemel, James L Cpa QUALIFIED62Anna Fali
1008Misaki RoysterIndia2026-04-12Chanay, Jeffrey A Esq NEGOTIATION29Ivan Magalhaes
1009Jones VocelkaSpain2026-04-19Chanay, Jeffrey A Esq NEGOTIATION76Amy Elsner
1010Alejandro PerinItaly2026-03-31Feltz Printing Service PROPOSAL66Xuxue Feng
1011Maisha RulapaughGermany2026-04-13Buckley Miller Wright QUALIFIED41Asiya Javayant
1012Darci PoquetteIndia2026-04-11Benton, John B Jr RENEWAL18Onyama Limba
1013Rodrigues CampainBrazil2026-03-28Feiner Bros NEW15Bernardo Dominic
1014Costa DilliardSpain2026-04-15King, Christopher A Esq RENEWAL33Bernardo Dominic
1015Ivar PaprockiSpain2026-04-07Chapman, Ross E Esq UNQUALIFIED85Ivan Magalhaes
1016James ButtRussia2026-04-21Chapman, Ross E Esq RENEWAL18Asiya Javayant
1017Darci PoquetteIndia2026-03-28Chanay, Jeffrey A Esq NEW44Amy Elsner
1018Maria MarrierRussia2026-03-29Printing Dimensions QUALIFIED45Ivan Magalhaes
1019Jeanfrancois VenereFrance2026-03-30Morlong Associates PROPOSAL77Ioni Bowcher
1020Maisha RulapaughArgentina2026-04-06Chapman, Ross E Esq NEGOTIATION6Stephen Shaw
1021Aditya KuskoJapan2026-04-21King, Christopher A Esq NEGOTIATION76Xuxue Feng
1022Misaki RoysterGermany2026-04-07Commercial Press NEGOTIATION41Onyama Limba
1023Jennifer AmigonArgentina2026-03-28Rangoni Of Florence NEGOTIATION58Ioni Bowcher
1024Misaki RoysterUnited Kingdom2026-04-18Morlong Associates UNQUALIFIED12Onyama Limba
1025Leja CaldareraUnited Kingdom2026-04-06Morlong Associates PROPOSAL50Onyama Limba
1026Mayumi KolmetzBrazil2026-03-30Chapman, Ross E Esq UNQUALIFIED7Onyama Limba
1027Smith GlickGermany2026-04-10Benton, John B Jr UNQUALIFIED29Elwin Sharvill
1028Kaitlin OstroskySpain2026-04-17Truhlar And Truhlar Attys UNQUALIFIED58Stephen Shaw
1029Cody SaylorsGermany2026-03-28Chemel, James L Cpa UNQUALIFIED74Onyama Limba
1030Kaitlin OstroskyRussia2026-04-13Rousseaux, Michael Esq RENEWAL17Xuxue Feng
1031Izzy GarufiArgentina2026-03-29Chapman, Ross E Esq QUALIFIED93Onyama Limba
1032Aruna FigeroaIndia2026-04-05Chapman, Ross E Esq UNQUALIFIED51Stephen Shaw
1033Deepesh ChuiSpain2026-04-18Benton, John B Jr PROPOSAL20Ioni Bowcher
1034Aditya KuskoSpain2026-04-08Printing Dimensions NEGOTIATION39Anna Fali
1035Faith GillianItaly2026-04-10Chemel, James L Cpa NEGOTIATION48Xuxue Feng
1036Costa DilliardUnited Kingdom2026-03-26Dorl, James J Esq NEGOTIATION15Ivan Magalhaes
1037Alejandro PerinGermany2026-04-15Rangoni Of Florence QUALIFIED14Ioni Bowcher
1038Emily WhobreyFrance2026-04-07Dorl, James J Esq QUALIFIED65Amy Elsner
1039Deepesh ChuiBrazil2026-04-23Chanay, Jeffrey A Esq UNQUALIFIED51Asiya Javayant
1040Faith GillianIndia2026-04-22Buckley Miller Wright NEW75Elwin Sharvill
1041Kadeem FlosiGermany2026-04-03King, Christopher A Esq NEGOTIATION72Onyama Limba
1042Leon OldroydFrance2026-04-23Buckley Miller Wright RENEWAL98Onyama Limba
1043Ricardo GauchoItaly2026-03-31Truhlar And Truhlar Attys QUALIFIED86Onyama Limba
1044Kaitlin OstroskyJapan2026-04-04Feltz Printing Service NEW49Amy Elsner
1045Leon OldroydBrazil2026-04-22King, Christopher A Esq NEGOTIATION18Ivan Magalhaes
1046Alejandro PerinUnited Kingdom2026-04-01Rousseaux, Michael Esq NEW19Amy Elsner
1047Maria MarrierUnited Kingdom2026-04-19Commercial Press UNQUALIFIED97Ioni Bowcher
1048Aditya KuskoSpain2026-04-16Rangoni Of Florence NEGOTIATION54Ivan Magalhaes
1049Alejandro PerinGermany2026-04-05Chapman, Ross E Esq PROPOSAL23Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Leon OldroydRussiaOnyama Limba NEGOTIATION
Wickens NestleArgentinaIoni Bowcher NEGOTIATION
Alejandro PerinCanadaXuxue Feng QUALIFIED
Cody SaylorsArgentinaXuxue Feng NEW
Juan WieserIndiaBernardo Dominic NEGOTIATION
Salvatore StockhamAustraliaElwin Sharvill QUALIFIED
Maria MarrierFranceIvan Magalhaes QUALIFIED
Alejandro PerinItalyBernardo Dominic RENEWAL
Emily WhobreyRussiaIvan Magalhaes UNQUALIFIED
Misaki RoysterGermanyIvan Magalhaes UNQUALIFIED
Murillo MaletCanadaAsiya Javayant PROPOSAL
Tony FollerIndiaAnna Fali NEGOTIATION
Stacey MacleadAustraliaAsiya Javayant RENEWAL
Maisha RulapaughItalyAnna Fali NEW
Morrow RutaAustraliaIvan Magalhaes RENEWAL
Chavez BriddickArgentinaElwin Sharvill PROPOSAL
David DarakjyItalyOnyama Limba PROPOSAL
Jones VocelkaIndiaIoni Bowcher QUALIFIED
Munro FerenczAustraliaStephen Shaw UNQUALIFIED
Johnson SergiGermanyOnyama Limba UNQUALIFIED
Ashley DoeUnited KingdomOnyama Limba UNQUALIFIED
Juan WieserCanadaBernardo Dominic NEGOTIATION
Sinclair WaycottIndiaAnna Fali UNQUALIFIED
Faith GillianUnited KingdomElwin Sharvill QUALIFIED
Rodrigues CampainCanadaStephen Shaw NEW
Salvatore StockhamUnited KingdomBernardo Dominic NEW
Aika InouyeCanadaAmy Elsner PROPOSAL
Salvatore StockhamGermanyAsiya Javayant PROPOSAL
Darci PoquetteAustraliaStephen Shaw NEW
Murillo MaletGermanyBernardo Dominic RENEWAL
Faith GillianUnited KingdomAsiya Javayant UNQUALIFIED
Chavez BriddickSpainOnyama Limba RENEWAL
Ashley DoeUnited KingdomIoni Bowcher RENEWAL
Deepesh ChuiJapanAsiya Javayant RENEWAL
Darci PoquetteBrazilAnna Fali RENEWAL
Murillo MaletSpainAmy Elsner RENEWAL
Costa DilliardItalyBernardo Dominic QUALIFIED
Kaitlin OstroskyUnited KingdomStephen Shaw NEGOTIATION
Arvin AlbaresArgentinaIoni Bowcher UNQUALIFIED
Juan WieserSpainAnna Fali UNQUALIFIED
James ButtUnited KingdomAnna Fali QUALIFIED
Maria MarrierAustraliaStephen Shaw NEW
Antonio CaudyGermanyOnyama Limba UNQUALIFIED
James ButtFranceIvan Magalhaes QUALIFIED
Kadeem FlosiAustraliaElwin Sharvill UNQUALIFIED
Rodrigues CampainIndiaIvan Magalhaes PROPOSAL
Silvio SlusarskiIndiaAnna Fali QUALIFIED
Deepesh ChuiJapanAnna Fali RENEWAL
Juan WieserCanadaAsiya Javayant NEGOTIATION
Johnson SergiGermanyStephen Shaw UNQUALIFIED
Frozen Columns
Name
Costa Dilliard
Octavia Malet
Antonio Caudy
Ricardo Gaucho
Tony Foller
Aditya Kusko
Adams Morasca
Leja Caldarera
Juan Wieser
Salvatore Stockham
Kadeem Flosi
Costa Dilliard
Stacey Maclead
Aditya Kusko
Francesco Shinko
Smith Glick
Morrow Ruta
Misaki Royster
Maisha Rulapaugh
Aditya Kusko
Mayumi Kolmetz
Misaki Royster
Chavez Briddick
Izzy Garufi
Rodrigues Campain
Claire Tollner
Smith Glick
Greenwood Bolognia
Cody Saylors
Aika Inouye
Emily Whobrey
Maria Marrier
Chavez Briddick
Leon Oldroyd
Leon Oldroyd
Leja Caldarera
Mujtaba Nicka
Jennifer Amigon
Octavia Malet
Francesco Shinko
Nicolas Iturbide
Alejandro Perin
Ashley Doe
Jennifer Amigon
Morrow Ruta
Antonio Caudy
Misaki Royster
Mujtaba Nicka
Adams Morasca
Maisha Rulapaugh
IdCountryDate
1000Canada2026-04-20
1001France2026-03-28
1002Italy2026-03-31
1003India2026-04-11
1004United Kingdom2026-04-14
1005Brazil2026-03-30
1006India2026-04-21
1007Italy2026-04-06
1008Brazil2026-04-03
1009United Kingdom2026-03-25
1010United Kingdom2026-04-07
1011India2026-04-12
1012Australia2026-03-26
1013Australia2026-04-08
1014France2026-04-10
1015Argentina2026-04-06
1016Germany2026-04-18
1017Germany2026-04-02
1018Germany2026-03-30
1019Japan2026-04-09
1020Spain2026-04-23
1021India2026-04-23
1022Brazil2026-04-09
1023Argentina2026-04-14
1024Spain2026-04-22
1025Japan2026-04-07
1026India2026-04-13
1027Japan2026-04-15
1028United Kingdom2026-04-06
1029France2026-04-15
1030Argentina2026-04-21
1031Australia2026-04-09
1032Russia2026-03-29
1033Germany2026-03-28
1034Germany2026-04-03
1035France2026-04-17
1036Argentina2026-04-23
1037Spain2026-04-18
1038United Kingdom2026-03-27
1039Argentina2026-04-13
1040Russia2026-04-12
1041Canada2026-04-01
1042Argentina2026-03-28
1043France2026-04-23
1044Germany2026-04-08
1045Canada2026-04-21
1046India2026-04-01
1047Japan2026-04-12
1048Germany2026-04-13
1049Germany2026-03-29

On-Demand Data

NameIdCountryDate
Murillo Malet1000Canada2026-04-08
Emily Whobrey1001Canada2026-04-03
Faith Gillian1002Russia2026-04-21
James Butt1003Canada2026-03-25
Francesco Shinko1004Russia2026-04-04
Emily Whobrey1005Brazil2026-04-16
Isabel Bowley1006India2026-04-20
Emily Whobrey1007United Kingdom2026-04-15
Aruna Figeroa1008Germany2026-04-05
Leja Caldarera1009Japan2026-04-18
Deepesh Chui1010Canada2026-04-01
Leon Oldroyd1011France2026-04-02
Aika Inouye1012Russia2026-03-31
Maria Marrier1013Argentina2026-04-11
Munro Ferencz1014Canada2026-03-29
Aditya Kusko1015Russia2026-03-27
Kaitlin Ostrosky1016Russia2026-03-28
Misaki Royster1017Italy2026-03-26
Tony Foller1018Argentina2026-04-10
Murillo Malet1019Canada2026-04-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleIndiaElwin Sharvill RENEWAL
Aruna FigeroaIndiaXuxue Feng RENEWAL
Izzy GarufiBrazilAnna Fali RENEWAL
Julie StensethFranceAnna Fali UNQUALIFIED
Misaki RoysterSpainAsiya Javayant PROPOSAL
Faith GillianIndiaIoni Bowcher PROPOSAL
Aruna FigeroaJapanElwin Sharvill NEW
Arvin AlbaresArgentinaAsiya Javayant QUALIFIED
Stacey MacleadUnited KingdomIoni Bowcher NEGOTIATION
Stacey MacleadCanadaAnna Fali NEW
Aditya KuskoJapanAsiya Javayant UNQUALIFIED
Kaitlin OstroskyGermanyAmy Elsner NEGOTIATION
Nicolas IturbideArgentinaAsiya Javayant UNQUALIFIED
Wickens NestleItalyElwin Sharvill UNQUALIFIED
Johnson SergiSpainAmy Elsner UNQUALIFIED
Adams MorascaRussiaBernardo Dominic QUALIFIED
Ivar PaprockiSpainIvan Magalhaes PROPOSAL
Maisha RulapaughSpainAmy Elsner RENEWAL
Deepesh ChuiAustraliaAmy Elsner RENEWAL
Jennifer AmigonCanadaIoni Bowcher NEW
Rodrigues CampainIndiaStephen Shaw NEW
Stacey MacleadJapanAsiya Javayant NEGOTIATION
Kaitlin OstroskyRussiaAsiya Javayant RENEWAL
Stacey MacleadSpainAnna Fali RENEWAL
Mayumi KolmetzSpainStephen Shaw NEGOTIATION
Maisha RulapaughArgentinaStephen Shaw RENEWAL
Juan WieserGermanyStephen Shaw RENEWAL
Mayumi KolmetzSpainAsiya Javayant NEGOTIATION
Jefferson SchemmerFranceBernardo Dominic QUALIFIED
Jennifer AmigonFranceAnna Fali UNQUALIFIED
Kadeem FlosiGermanyBernardo Dominic NEW
Jennifer AmigonSpainAsiya Javayant PROPOSAL
Wickens NestleArgentinaIvan Magalhaes NEGOTIATION
Jones VocelkaSpainXuxue Feng PROPOSAL
Faith GillianRussiaBernardo Dominic UNQUALIFIED
Mayumi KolmetzCanadaAmy Elsner RENEWAL
Greenwood BologniaArgentinaIoni Bowcher NEW
Wickens NestleAustraliaIoni Bowcher PROPOSAL
James ButtSpainElwin Sharvill QUALIFIED
Nicolas IturbideAustraliaIvan Magalhaes UNQUALIFIED

<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>