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
Jefferson SchemmerAustraliaIvan Magalhaes NEGOTIATION
Munro FerenczSpainElwin Sharvill RENEWAL
Cody SaylorsRussiaAmy Elsner UNQUALIFIED
Misaki RoysterAustraliaOnyama Limba NEW
Stacey MacleadFranceAnna Fali PROPOSAL
Costa DilliardAustraliaElwin Sharvill UNQUALIFIED
Ricardo GauchoFranceStephen Shaw RENEWAL
Murillo MaletItalyElwin Sharvill UNQUALIFIED
Darci PoquetteItalyStephen Shaw NEGOTIATION
Silvio SlusarskiCanadaAnna Fali RENEWAL
Murillo MaletAustraliaIoni Bowcher UNQUALIFIED
Emily WhobreyBrazilAnna Fali PROPOSAL
Antonio CaudyGermanyIvan Magalhaes PROPOSAL
Leon OldroydRussiaAsiya Javayant NEGOTIATION
Leon OldroydIndiaElwin Sharvill NEW
Leja CaldareraBrazilAsiya Javayant PROPOSAL
Jefferson SchemmerItalyIoni Bowcher RENEWAL
Jennifer AmigonAustraliaElwin Sharvill PROPOSAL
Smith GlickIndiaElwin Sharvill NEW
David DarakjyUnited KingdomElwin Sharvill RENEWAL
Arvin AlbaresSpainBernardo Dominic QUALIFIED
Nicolas IturbideBrazilBernardo Dominic NEGOTIATION
Isabel BowleyIndiaAnna Fali RENEWAL
Clifford RimAustraliaIoni Bowcher NEW
Salvatore StockhamFranceStephen Shaw PROPOSAL
Sinclair WaycottUnited KingdomIvan Magalhaes RENEWAL
Izzy GarufiIndiaOnyama Limba UNQUALIFIED
Mujtaba NickaCanadaIvan Magalhaes UNQUALIFIED
Chavez BriddickBrazilBernardo Dominic NEW
Stacey MacleadSpainStephen Shaw UNQUALIFIED
Nicolas IturbideBrazilAmy Elsner QUALIFIED
Ricardo GauchoAustraliaOnyama Limba NEW
Maisha RulapaughCanadaXuxue Feng UNQUALIFIED
Arvin AlbaresJapanAmy Elsner UNQUALIFIED
Johnson SergiRussiaElwin Sharvill NEGOTIATION
Emily WhobreyBrazilIoni Bowcher QUALIFIED
Stacey MacleadGermanyXuxue Feng PROPOSAL
Johnson SergiIndiaOnyama Limba UNQUALIFIED
Johnson SergiUnited KingdomAmy Elsner NEW
Salvatore StockhamCanadaAnna Fali PROPOSAL
James ButtCanadaAnna Fali UNQUALIFIED
Misaki RoysterCanadaIvan Magalhaes NEGOTIATION
James ButtItalyIoni Bowcher QUALIFIED
Wickens NestleItalyIoni Bowcher NEW
Leja CaldareraFranceAmy Elsner PROPOSAL
Nicolas IturbideArgentinaXuxue Feng QUALIFIED
Silvio SlusarskiAustraliaAmy Elsner NEGOTIATION
James ButtRussiaElwin Sharvill NEGOTIATION
Antonio CaudyUnited KingdomAnna Fali RENEWAL
Emily WhobreyFranceIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Antonio CaudyArgentinaOnyama Limba RENEWAL
Antonio CaudyJapanAsiya Javayant NEW
Maria MarrierSpainIoni Bowcher QUALIFIED
Tony FollerUnited KingdomStephen Shaw QUALIFIED
Johnson SergiItalyStephen Shaw RENEWAL
Leja CaldareraCanadaIvan Magalhaes UNQUALIFIED
Mayumi KolmetzCanadaAmy Elsner NEW
James ButtCanadaStephen Shaw UNQUALIFIED
Johnson SergiRussiaBernardo Dominic NEGOTIATION
Alejandro PerinRussiaAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro PerinFrance2026-05-19Buckley Miller Wright QUALIFIED91Onyama Limba
1001Ivar PaprockiRussia2026-05-19Buckley Miller Wright RENEWAL10Elwin Sharvill
1002Deepesh ChuiCanada2026-06-10Buckley Miller Wright PROPOSAL20Ivan Magalhaes
1003Murillo MaletUnited Kingdom2026-05-28Chemel, James L Cpa NEW70Onyama Limba
1004Sinclair WaycottRussia2026-05-15Chapman, Ross E Esq QUALIFIED30Bernardo Dominic
1005Jennifer AmigonJapan2026-06-06Rangoni Of Florence QUALIFIED80Asiya Javayant
1006Julie StensethSpain2026-06-05Chemel, James L Cpa NEGOTIATION81Xuxue Feng
1007Kadeem FlosiUnited Kingdom2026-06-01Feltz Printing Service UNQUALIFIED41Bernardo Dominic
1008Jeanfrancois VenereAustralia2026-05-24Chapman, Ross E Esq QUALIFIED65Amy Elsner
1009Arvin AlbaresGermany2026-05-18Feltz Printing Service QUALIFIED32Ioni Bowcher
1010Silvio SlusarskiItaly2026-06-03Chemel, James L Cpa PROPOSAL79Ioni Bowcher
1011Mujtaba NickaFrance2026-06-10Rangoni Of Florence UNQUALIFIED17Xuxue Feng
1012Jeanfrancois VenereFrance2026-05-26Benton, John B Jr RENEWAL2Asiya Javayant
1013Aruna FigeroaSpain2026-05-17Printing Dimensions UNQUALIFIED17Amy Elsner
1014Jefferson SchemmerItaly2026-05-30Chanay, Jeffrey A Esq PROPOSAL50Stephen Shaw
1015Emily WhobreyUnited Kingdom2026-05-19Rousseaux, Michael Esq QUALIFIED68Asiya Javayant
1016Mujtaba NickaGermany2026-05-28Feltz Printing Service QUALIFIED38Stephen Shaw
1017Leon OldroydFrance2026-05-21Commercial Press PROPOSAL17Elwin Sharvill
1018Arvin AlbaresArgentina2026-05-18Dorl, James J Esq NEGOTIATION61Stephen Shaw
1019Isabel BowleyRussia2026-05-22Commercial Press NEW71Asiya Javayant
1020Adams MorascaUnited Kingdom2026-05-28Dorl, James J Esq NEW87Ivan Magalhaes
1021Aditya KuskoGermany2026-05-13King, Christopher A Esq QUALIFIED28Elwin Sharvill
1022Izzy GarufiCanada2026-05-13Buckley Miller Wright QUALIFIED1Stephen Shaw
1023Ashley DoeItaly2026-05-14Rousseaux, Michael Esq NEGOTIATION19Asiya Javayant
1024Silvio SlusarskiFrance2026-05-29Chapman, Ross E Esq RENEWAL75Amy Elsner
1025Mayumi KolmetzItaly2026-06-05Morlong Associates QUALIFIED43Ioni Bowcher
1026Kaitlin OstroskyCanada2026-05-27Benton, John B Jr UNQUALIFIED49Bernardo Dominic
1027Nicolas IturbideUnited Kingdom2026-05-24Dorl, James J Esq NEW19Ivan Magalhaes
1028Aditya KuskoGermany2026-05-23Chemel, James L Cpa RENEWAL32Anna Fali
1029Smith GlickFrance2026-05-23King, Christopher A Esq NEW99Ivan Magalhaes
1030Chavez BriddickItaly2026-05-15Chemel, James L Cpa UNQUALIFIED41Asiya Javayant
1031Silvio SlusarskiCanada2026-05-22Rousseaux, Michael Esq NEW82Onyama Limba
1032Tony FollerCanada2026-05-25Rangoni Of Florence PROPOSAL47Amy Elsner
1033James ButtAustralia2026-06-05Truhlar And Truhlar Attys NEGOTIATION35Bernardo Dominic
1034Leja CaldareraFrance2026-05-20Rousseaux, Michael Esq PROPOSAL34Onyama Limba
1035Jefferson SchemmerJapan2026-05-21Chemel, James L Cpa RENEWAL88Bernardo Dominic
1036Maria MarrierBrazil2026-05-30Morlong Associates UNQUALIFIED32Amy Elsner
1037Mayumi KolmetzUnited Kingdom2026-05-20Morlong Associates QUALIFIED34Amy Elsner
1038Cody SaylorsSpain2026-06-06Rousseaux, Michael Esq PROPOSAL96Bernardo Dominic
1039Clifford RimJapan2026-05-16Feltz Printing Service PROPOSAL55Asiya Javayant
1040Adams MorascaBrazil2026-05-21Rangoni Of Florence RENEWAL4Bernardo Dominic
1041Ivar PaprockiRussia2026-05-29Printing Dimensions NEW21Amy Elsner
1042Maisha RulapaughIndia2026-05-14Feltz Printing Service QUALIFIED33Amy Elsner
1043Nicolas IturbideCanada2026-05-14Printing Dimensions NEW95Elwin Sharvill
1044Mujtaba NickaGermany2026-05-28Commercial Press UNQUALIFIED96Anna Fali
1045Kadeem FlosiIndia2026-06-07Chemel, James L Cpa QUALIFIED40Asiya Javayant
1046Jennifer AmigonFrance2026-05-25Benton, John B Jr QUALIFIED21Onyama Limba
1047Smith GlickRussia2026-06-02Benton, John B Jr NEGOTIATION64Onyama Limba
1048Greenwood BologniaUnited Kingdom2026-05-14Feiner Bros QUALIFIED44Asiya Javayant
1049Kaitlin OstroskyAustralia2026-05-13Rangoni Of Florence NEGOTIATION78Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Sinclair WaycottAustraliaAmy Elsner NEGOTIATION
Greenwood BologniaIndiaBernardo Dominic QUALIFIED
Aruna FigeroaUnited KingdomOnyama Limba UNQUALIFIED
Morrow RutaJapanBernardo Dominic RENEWAL
Wickens NestleCanadaIoni Bowcher NEGOTIATION
Mujtaba NickaItalyStephen Shaw RENEWAL
Juan WieserItalyAnna Fali RENEWAL
Jones VocelkaAustraliaIoni Bowcher UNQUALIFIED
Greenwood BologniaRussiaOnyama Limba UNQUALIFIED
Tony FollerJapanAsiya Javayant QUALIFIED
Morrow RutaRussiaOnyama Limba NEGOTIATION
Adams MorascaJapanIoni Bowcher NEW
Nicolas IturbideIndiaElwin Sharvill NEGOTIATION
Francesco ShinkoUnited KingdomOnyama Limba NEW
Jefferson SchemmerGermanyOnyama Limba UNQUALIFIED
Alejandro PerinGermanyAnna Fali QUALIFIED
Munro FerenczJapanOnyama Limba NEGOTIATION
Jeanfrancois VenereJapanElwin Sharvill UNQUALIFIED
Cody SaylorsItalyBernardo Dominic NEW
Smith GlickIndiaAmy Elsner UNQUALIFIED
Morrow RutaJapanXuxue Feng PROPOSAL
Julie StensethSpainAnna Fali PROPOSAL
Claire TollnerFranceStephen Shaw NEW
Faith GillianCanadaXuxue Feng QUALIFIED
Kadeem FlosiArgentinaXuxue Feng RENEWAL
Stacey MacleadItalyOnyama Limba PROPOSAL
Cody SaylorsBrazilIoni Bowcher QUALIFIED
Emily WhobreyArgentinaAnna Fali PROPOSAL
Leon OldroydUnited KingdomBernardo Dominic QUALIFIED
Aika InouyeBrazilElwin Sharvill PROPOSAL
Jefferson SchemmerArgentinaElwin Sharvill PROPOSAL
Johnson SergiSpainOnyama Limba NEW
Greenwood BologniaArgentinaOnyama Limba QUALIFIED
Jefferson SchemmerAustraliaStephen Shaw RENEWAL
Maisha RulapaughJapanAnna Fali QUALIFIED
Adams MorascaItalyStephen Shaw RENEWAL
Juan WieserGermanyIvan Magalhaes RENEWAL
Salvatore StockhamGermanyElwin Sharvill UNQUALIFIED
Octavia MaletCanadaAmy Elsner NEGOTIATION
David DarakjyAustraliaBernardo Dominic NEW
Izzy GarufiUnited KingdomOnyama Limba UNQUALIFIED
Adams MorascaGermanyXuxue Feng NEW
Izzy GarufiIndiaAsiya Javayant QUALIFIED
Aditya KuskoSpainStephen Shaw NEW
Ashley DoeBrazilAnna Fali PROPOSAL
Julie StensethIndiaElwin Sharvill UNQUALIFIED
Ricardo GauchoIndiaAsiya Javayant RENEWAL
Kaitlin OstroskyJapanIoni Bowcher UNQUALIFIED
Ashley DoeItalyAsiya Javayant PROPOSAL
Jefferson SchemmerRussiaIoni Bowcher RENEWAL
Frozen Columns
Name
Isabel Bowley
Johnson Sergi
Kaitlin Ostrosky
Cody Saylors
Juan Wieser
Ivar Paprocki
Faith Gillian
Murillo Malet
Faith Gillian
Costa Dilliard
Faith Gillian
Smith Glick
Ashley Doe
Aika Inouye
Smith Glick
Misaki Royster
Emily Whobrey
Octavia Malet
David Darakjy
Arvin Albares
Munro Ferencz
Cody Saylors
Jones Vocelka
Johnson Sergi
Ricardo Gaucho
Silvio Slusarski
Rodrigues Campain
Maisha Rulapaugh
Sinclair Waycott
Arvin Albares
Leja Caldarera
Adams Morasca
Kaitlin Ostrosky
Mujtaba Nicka
Mujtaba Nicka
Juan Wieser
James Butt
Jefferson Schemmer
Murillo Malet
Kaitlin Ostrosky
Munro Ferencz
James Butt
Rodrigues Campain
Adams Morasca
Chavez Briddick
Cody Saylors
Ricardo Gaucho
Adams Morasca
Nicolas Iturbide
Jennifer Amigon
IdCountryDate
1000Japan2026-06-08
1001Russia2026-05-22
1002Canada2026-06-05
1003Brazil2026-05-28
1004Italy2026-05-31
1005France2026-05-31
1006Australia2026-05-22
1007Brazil2026-05-16
1008Canada2026-05-21
1009United Kingdom2026-05-25
1010Spain2026-05-22
1011Japan2026-06-09
1012Argentina2026-05-16
1013Japan2026-05-20
1014Russia2026-05-23
1015Italy2026-05-13
1016Australia2026-06-11
1017United Kingdom2026-05-15
1018United Kingdom2026-06-04
1019Japan2026-05-29
1020Australia2026-06-07
1021Russia2026-05-29
1022Japan2026-06-04
1023Japan2026-05-22
1024Canada2026-05-21
1025Argentina2026-06-11
1026Australia2026-06-01
1027Japan2026-06-05
1028United Kingdom2026-06-08
1029Japan2026-05-18
1030Russia2026-06-01
1031Canada2026-05-28
1032Argentina2026-05-21
1033France2026-06-09
1034India2026-06-06
1035France2026-05-26
1036France2026-05-24
1037United Kingdom2026-05-30
1038India2026-06-01
1039France2026-05-29
1040India2026-05-19
1041France2026-06-03
1042India2026-05-25
1043Argentina2026-05-13
1044Japan2026-05-29
1045Canada2026-06-05
1046Italy2026-05-23
1047Australia2026-05-29
1048Australia2026-05-25
1049Spain2026-06-01

On-Demand Data

NameIdCountryDate
Leja Caldarera1000Brazil2026-06-10
Rodrigues Campain1001India2026-05-14
Morrow Ruta1002Italy2026-06-03
Octavia Malet1003France2026-05-14
Alejandro Perin1004Italy2026-05-13
Cody Saylors1005Argentina2026-05-15
Aika Inouye1006United Kingdom2026-05-23
Maria Marrier1007Italy2026-05-26
Kaitlin Ostrosky1008Germany2026-06-03
Jennifer Amigon1009Japan2026-06-01
Jennifer Amigon1010France2026-05-16
Misaki Royster1011Australia2026-05-21
Arvin Albares1012Spain2026-06-02
Jones Vocelka1013Spain2026-06-10
Wickens Nestle1014Germany2026-05-31
Munro Ferencz1015Japan2026-05-25
Deepesh Chui1016France2026-05-30
Kadeem Flosi1017Australia2026-05-25
Jefferson Schemmer1018France2026-06-06
Jeanfrancois Venere1019India2026-05-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore StockhamIndiaXuxue Feng RENEWAL
Jeanfrancois VenereRussiaAnna Fali QUALIFIED
James ButtRussiaAmy Elsner PROPOSAL
Ricardo GauchoUnited KingdomOnyama Limba PROPOSAL
Salvatore StockhamUnited KingdomAnna Fali RENEWAL
Darci PoquetteGermanyIoni Bowcher PROPOSAL
Misaki RoysterItalyOnyama Limba QUALIFIED
Stacey MacleadSpainXuxue Feng PROPOSAL
Ricardo GauchoIndiaAsiya Javayant UNQUALIFIED
Wickens NestleItalyAsiya Javayant UNQUALIFIED
Nicolas IturbideUnited KingdomXuxue Feng NEGOTIATION
Rodrigues CampainCanadaBernardo Dominic PROPOSAL
Antonio CaudyBrazilElwin Sharvill NEGOTIATION
Deepesh ChuiItalyAnna Fali QUALIFIED
Jennifer AmigonItalyStephen Shaw RENEWAL
Kadeem FlosiUnited KingdomBernardo Dominic RENEWAL
Ivar PaprockiFranceElwin Sharvill NEW
Jefferson SchemmerRussiaBernardo Dominic UNQUALIFIED
Arvin AlbaresGermanyAnna Fali NEGOTIATION
James ButtCanadaStephen Shaw PROPOSAL
Maisha RulapaughArgentinaAsiya Javayant NEGOTIATION
Murillo MaletAustraliaElwin Sharvill NEGOTIATION
Alejandro PerinGermanyAnna Fali NEW
Murillo MaletGermanyElwin Sharvill NEGOTIATION
Maisha RulapaughCanadaIoni Bowcher UNQUALIFIED
Rodrigues CampainSpainStephen Shaw NEW
Costa DilliardGermanyAnna Fali NEGOTIATION
Leja CaldareraItalyXuxue Feng NEW
Aika InouyeBrazilAsiya Javayant NEGOTIATION
Mayumi KolmetzBrazilElwin Sharvill PROPOSAL
Maisha RulapaughBrazilAmy Elsner NEGOTIATION
Greenwood BologniaItalyOnyama Limba NEW
Costa DilliardGermanyIoni Bowcher PROPOSAL
Kadeem FlosiCanadaAnna Fali NEGOTIATION
Jefferson SchemmerItalyAmy Elsner NEW
Mujtaba NickaRussiaIoni Bowcher UNQUALIFIED
Mujtaba NickaArgentinaOnyama Limba PROPOSAL
Stacey MacleadAustraliaAmy Elsner UNQUALIFIED
Nicolas IturbideFranceIoni Bowcher RENEWAL
Greenwood BologniaFranceIoni Bowcher 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>