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
Juan WieserBrazilIoni Bowcher NEW
Arvin AlbaresGermanyBernardo Dominic UNQUALIFIED
Adams MorascaArgentinaElwin Sharvill UNQUALIFIED
Claire TollnerCanadaIvan Magalhaes UNQUALIFIED
Tony FollerIndiaIoni Bowcher UNQUALIFIED
Alejandro PerinAustraliaIvan Magalhaes NEGOTIATION
Faith GillianGermanyStephen Shaw UNQUALIFIED
Kaitlin OstroskyGermanyOnyama Limba QUALIFIED
Mayumi KolmetzFranceIoni Bowcher QUALIFIED
Chavez BriddickItalyStephen Shaw NEW
Deepesh ChuiBrazilStephen Shaw UNQUALIFIED
Adams MorascaJapanBernardo Dominic RENEWAL
Jennifer AmigonArgentinaAnna Fali RENEWAL
Ivar PaprockiFranceBernardo Dominic UNQUALIFIED
Aruna FigeroaIndiaIoni Bowcher QUALIFIED
Salvatore StockhamCanadaIoni Bowcher PROPOSAL
Deepesh ChuiBrazilIvan Magalhaes NEW
Kadeem FlosiItalyStephen Shaw PROPOSAL
Maisha RulapaughAustraliaElwin Sharvill QUALIFIED
Jeanfrancois VenereItalyBernardo Dominic NEW
Octavia MaletAustraliaIvan Magalhaes QUALIFIED
Nicolas IturbideRussiaBernardo Dominic RENEWAL
Izzy GarufiSpainXuxue Feng PROPOSAL
Isabel BowleyJapanElwin Sharvill NEGOTIATION
Leon OldroydAustraliaStephen Shaw RENEWAL
Clifford RimJapanBernardo Dominic NEW
Antonio CaudyUnited KingdomStephen Shaw UNQUALIFIED
Ashley DoeAustraliaAmy Elsner QUALIFIED
Juan WieserCanadaAsiya Javayant QUALIFIED
Octavia MaletSpainAsiya Javayant PROPOSAL
Ashley DoeCanadaAsiya Javayant RENEWAL
Salvatore StockhamAustraliaElwin Sharvill NEW
Misaki RoysterIndiaBernardo Dominic QUALIFIED
Claire TollnerRussiaAmy Elsner RENEWAL
Deepesh ChuiBrazilOnyama Limba PROPOSAL
Kadeem FlosiFranceXuxue Feng UNQUALIFIED
Nicolas IturbideFranceXuxue Feng PROPOSAL
Maria MarrierFranceIoni Bowcher NEGOTIATION
Salvatore StockhamCanadaElwin Sharvill PROPOSAL
Jones VocelkaBrazilElwin Sharvill QUALIFIED
Smith GlickFranceStephen Shaw RENEWAL
Cody SaylorsSpainOnyama Limba PROPOSAL
Johnson SergiSpainStephen Shaw PROPOSAL
Aika InouyeItalyIoni Bowcher PROPOSAL
Clifford RimFranceAmy Elsner QUALIFIED
Izzy GarufiIndiaBernardo Dominic RENEWAL
Mujtaba NickaItalyOnyama Limba QUALIFIED
Jefferson SchemmerItalyAsiya Javayant UNQUALIFIED
Nicolas IturbideFranceOnyama Limba UNQUALIFIED
Ashley DoeCanadaAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Greenwood BologniaBrazilBernardo Dominic NEGOTIATION
Mujtaba NickaGermanyAmy Elsner RENEWAL
Wickens NestleCanadaElwin Sharvill UNQUALIFIED
Leja CaldareraJapanAnna Fali PROPOSAL
Arvin AlbaresUnited KingdomOnyama Limba RENEWAL
Costa DilliardSpainXuxue Feng RENEWAL
Smith GlickRussiaElwin Sharvill NEW
Nicolas IturbideUnited KingdomElwin Sharvill UNQUALIFIED
Maria MarrierGermanyOnyama Limba UNQUALIFIED
Aditya KuskoSpainAnna Fali RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydJapan2026-04-14Chanay, Jeffrey A Esq NEGOTIATION95Bernardo Dominic
1001Morrow RutaItaly2026-04-15Printing Dimensions NEGOTIATION93Bernardo Dominic
1002Nicolas IturbideGermany2026-05-02Rangoni Of Florence QUALIFIED10Xuxue Feng
1003Leja CaldareraUnited Kingdom2026-04-30Chemel, James L Cpa NEW61Asiya Javayant
1004Rodrigues CampainJapan2026-04-21Chanay, Jeffrey A Esq NEW30Ivan Magalhaes
1005Antonio CaudyArgentina2026-04-21Rangoni Of Florence PROPOSAL19Stephen Shaw
1006Izzy GarufiArgentina2026-05-07King, Christopher A Esq QUALIFIED75Elwin Sharvill
1007Smith GlickAustralia2026-04-26Feiner Bros QUALIFIED51Stephen Shaw
1008Salvatore StockhamGermany2026-04-26Feltz Printing Service PROPOSAL31Ivan Magalhaes
1009Jones VocelkaItaly2026-05-02Feltz Printing Service NEW81Anna Fali
1010Aditya KuskoUnited Kingdom2026-04-29Feltz Printing Service UNQUALIFIED40Onyama Limba
1011Wickens NestleRussia2026-04-25Printing Dimensions NEW77Asiya Javayant
1012Stacey MacleadUnited Kingdom2026-04-27Morlong Associates NEGOTIATION26Bernardo Dominic
1013Julie StensethJapan2026-04-16Benton, John B Jr PROPOSAL30Anna Fali
1014Stacey MacleadCanada2026-05-03Feltz Printing Service PROPOSAL34Bernardo Dominic
1015Jennifer AmigonArgentina2026-05-04Rousseaux, Michael Esq RENEWAL82Ivan Magalhaes
1016Chavez BriddickIndia2026-04-15Commercial Press NEW47Amy Elsner
1017Maisha RulapaughItaly2026-04-27Feltz Printing Service UNQUALIFIED44Stephen Shaw
1018Cody SaylorsCanada2026-04-20Chapman, Ross E Esq NEW22Onyama Limba
1019Aditya KuskoFrance2026-04-24Chemel, James L Cpa RENEWAL61Onyama Limba
1020Maisha RulapaughAustralia2026-04-16Buckley Miller Wright UNQUALIFIED44Ioni Bowcher
1021Smith GlickAustralia2026-04-12Truhlar And Truhlar Attys NEGOTIATION99Onyama Limba
1022Ashley DoeJapan2026-04-25Chanay, Jeffrey A Esq NEGOTIATION77Elwin Sharvill
1023Jefferson SchemmerJapan2026-04-14Printing Dimensions NEW9Amy Elsner
1024Sinclair WaycottGermany2026-04-30Commercial Press NEW71Ivan Magalhaes
1025Tony FollerBrazil2026-05-08Dorl, James J Esq UNQUALIFIED7Elwin Sharvill
1026Deepesh ChuiItaly2026-04-13Chemel, James L Cpa NEW47Ioni Bowcher
1027Jones VocelkaGermany2026-04-17Benton, John B Jr NEGOTIATION67Ivan Magalhaes
1028Isabel BowleyIndia2026-04-19Benton, John B Jr NEW51Amy Elsner
1029Leon OldroydGermany2026-04-17Rousseaux, Michael Esq PROPOSAL11Xuxue Feng
1030Jones VocelkaSpain2026-05-02Rousseaux, Michael Esq RENEWAL9Amy Elsner
1031Julie StensethCanada2026-04-16Benton, John B Jr NEW14Elwin Sharvill
1032Greenwood BologniaSpain2026-05-10Feltz Printing Service UNQUALIFIED87Amy Elsner
1033Deepesh ChuiJapan2026-04-23Benton, John B Jr UNQUALIFIED46Elwin Sharvill
1034Juan WieserSpain2026-04-28Chapman, Ross E Esq RENEWAL94Stephen Shaw
1035Alejandro PerinItaly2026-05-07Chapman, Ross E Esq PROPOSAL30Onyama Limba
1036Maria MarrierBrazil2026-05-01Chapman, Ross E Esq UNQUALIFIED45Ioni Bowcher
1037Kaitlin OstroskyRussia2026-04-14Rousseaux, Michael Esq UNQUALIFIED59Asiya Javayant
1038David DarakjyRussia2026-04-12Feltz Printing Service PROPOSAL98Ivan Magalhaes
1039Antonio CaudyGermany2026-04-30Chanay, Jeffrey A Esq UNQUALIFIED8Elwin Sharvill
1040Jennifer AmigonBrazil2026-04-13Commercial Press UNQUALIFIED22Xuxue Feng
1041Francesco ShinkoIndia2026-04-16Buckley Miller Wright QUALIFIED42Elwin Sharvill
1042Faith GillianFrance2026-05-02Rousseaux, Michael Esq PROPOSAL35Elwin Sharvill
1043Isabel BowleyUnited Kingdom2026-04-29Commercial Press QUALIFIED81Ivan Magalhaes
1044Smith GlickSpain2026-04-14Feiner Bros NEW30Anna Fali
1045Costa DilliardRussia2026-05-03Dorl, James J Esq NEGOTIATION99Stephen Shaw
1046Ivar PaprockiIndia2026-05-10Feltz Printing Service UNQUALIFIED4Ivan Magalhaes
1047Emily WhobreyFrance2026-04-22Morlong Associates QUALIFIED3Anna Fali
1048Leon OldroydBrazil2026-05-08Feiner Bros RENEWAL66Xuxue Feng
1049Wickens NestleUnited Kingdom2026-04-24Commercial Press QUALIFIED72Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Sinclair WaycottBrazilOnyama Limba NEW
Maisha RulapaughCanadaAnna Fali PROPOSAL
Chavez BriddickBrazilAnna Fali NEW
Jeanfrancois VenereRussiaIvan Magalhaes PROPOSAL
Stacey MacleadIndiaOnyama Limba PROPOSAL
Jones VocelkaBrazilAnna Fali NEW
Ricardo GauchoJapanAsiya Javayant QUALIFIED
David DarakjyCanadaAnna Fali NEW
Johnson SergiUnited KingdomBernardo Dominic PROPOSAL
Faith GillianCanadaStephen Shaw NEW
Jennifer AmigonBrazilAsiya Javayant RENEWAL
Murillo MaletJapanIvan Magalhaes NEGOTIATION
Silvio SlusarskiBrazilAsiya Javayant RENEWAL
Faith GillianGermanyXuxue Feng QUALIFIED
Aika InouyeRussiaIvan Magalhaes RENEWAL
Aditya KuskoArgentinaXuxue Feng PROPOSAL
Cody SaylorsCanadaOnyama Limba QUALIFIED
Jeanfrancois VenereSpainAsiya Javayant UNQUALIFIED
Maria MarrierUnited KingdomElwin Sharvill RENEWAL
Cody SaylorsArgentinaStephen Shaw UNQUALIFIED
Darci PoquetteBrazilAmy Elsner NEGOTIATION
Julie StensethGermanyBernardo Dominic NEGOTIATION
Aika InouyeArgentinaAsiya Javayant NEGOTIATION
Ivar PaprockiJapanAsiya Javayant PROPOSAL
Rodrigues CampainAustraliaElwin Sharvill QUALIFIED
Darci PoquetteJapanBernardo Dominic NEGOTIATION
Jefferson SchemmerFranceElwin Sharvill UNQUALIFIED
Maria MarrierUnited KingdomAnna Fali QUALIFIED
Morrow RutaSpainIoni Bowcher QUALIFIED
Adams MorascaIndiaOnyama Limba RENEWAL
Clifford RimCanadaAsiya Javayant QUALIFIED
Clifford RimJapanIoni Bowcher NEW
Deepesh ChuiUnited KingdomAmy Elsner QUALIFIED
Leja CaldareraSpainStephen Shaw NEGOTIATION
Morrow RutaCanadaAnna Fali PROPOSAL
Silvio SlusarskiBrazilStephen Shaw NEGOTIATION
Murillo MaletIndiaIvan Magalhaes NEGOTIATION
Leja CaldareraBrazilStephen Shaw UNQUALIFIED
Johnson SergiIndiaOnyama Limba QUALIFIED
Maisha RulapaughRussiaXuxue Feng QUALIFIED
Jennifer AmigonCanadaBernardo Dominic QUALIFIED
Darci PoquetteJapanOnyama Limba NEGOTIATION
Misaki RoysterAustraliaAnna Fali QUALIFIED
Maisha RulapaughUnited KingdomIoni Bowcher NEGOTIATION
Munro FerenczItalyOnyama Limba NEGOTIATION
Adams MorascaItalyElwin Sharvill UNQUALIFIED
Francesco ShinkoCanadaOnyama Limba UNQUALIFIED
Kadeem FlosiArgentinaIvan Magalhaes QUALIFIED
Ricardo GauchoBrazilStephen Shaw RENEWAL
Leon OldroydCanadaIoni Bowcher UNQUALIFIED
Frozen Columns
Name
Deepesh Chui
Kaitlin Ostrosky
Cody Saylors
Costa Dilliard
Deepesh Chui
Faith Gillian
Mayumi Kolmetz
Smith Glick
James Butt
Aditya Kusko
Antonio Caudy
Nicolas Iturbide
Deepesh Chui
Alejandro Perin
Costa Dilliard
Maisha Rulapaugh
Kadeem Flosi
Rodrigues Campain
Ricardo Gaucho
Ricardo Gaucho
Aika Inouye
Silvio Slusarski
Darci Poquette
Jefferson Schemmer
Smith Glick
Claire Tollner
Claire Tollner
Sinclair Waycott
Octavia Malet
Greenwood Bolognia
Darci Poquette
Wickens Nestle
Emily Whobrey
Kaitlin Ostrosky
Morrow Ruta
Adams Morasca
Kaitlin Ostrosky
Juan Wieser
Smith Glick
Octavia Malet
Johnson Sergi
Juan Wieser
Juan Wieser
Ricardo Gaucho
Kadeem Flosi
Stacey Maclead
Maisha Rulapaugh
Misaki Royster
Deepesh Chui
Stacey Maclead
IdCountryDate
1000Argentina2026-04-22
1001Germany2026-04-26
1002Spain2026-04-16
1003Japan2026-05-10
1004Argentina2026-04-26
1005France2026-05-04
1006United Kingdom2026-05-03
1007Brazil2026-05-01
1008Spain2026-05-09
1009Australia2026-04-23
1010Brazil2026-04-12
1011Germany2026-04-23
1012Japan2026-05-09
1013Argentina2026-04-24
1014France2026-05-05
1015Australia2026-04-15
1016France2026-05-01
1017Australia2026-04-24
1018Spain2026-04-15
1019Brazil2026-04-11
1020Italy2026-04-14
1021Brazil2026-05-02
1022Russia2026-04-20
1023United Kingdom2026-04-29
1024Australia2026-05-08
1025Brazil2026-04-17
1026Canada2026-05-05
1027Brazil2026-05-04
1028Argentina2026-05-07
1029Canada2026-04-25
1030Argentina2026-05-09
1031Spain2026-04-23
1032Germany2026-04-20
1033Italy2026-05-03
1034Japan2026-04-26
1035Australia2026-04-30
1036India2026-05-09
1037Canada2026-04-17
1038Italy2026-04-22
1039Russia2026-04-17
1040Russia2026-04-13
1041Russia2026-04-30
1042France2026-04-11
1043India2026-04-19
1044Germany2026-04-15
1045Argentina2026-05-05
1046France2026-04-16
1047Italy2026-04-12
1048Australia2026-04-14
1049France2026-04-19

On-Demand Data

NameIdCountryDate
Silvio Slusarski1000United Kingdom2026-05-04
Antonio Caudy1001United Kingdom2026-04-20
Morrow Ruta1002Argentina2026-04-29
Wickens Nestle1003India2026-04-27
Darci Poquette1004Spain2026-04-12
Leon Oldroyd1005Germany2026-04-23
Kaitlin Ostrosky1006Argentina2026-04-11
Johnson Sergi1007Brazil2026-05-08
Jefferson Schemmer1008Italy2026-04-18
Julie Stenseth1009Italy2026-05-04
Leja Caldarera1010France2026-04-27
Chavez Briddick1011Brazil2026-04-20
Emily Whobrey1012Canada2026-05-07
Clifford Rim1013Russia2026-04-11
Clifford Rim1014Brazil2026-04-27
Tony Foller1015Canada2026-04-28
Antonio Caudy1016Japan2026-04-13
Nicolas Iturbide1017Spain2026-05-10
Aditya Kusko1018Germany2026-05-08
Jennifer Amigon1019Russia2026-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey MacleadSpainElwin Sharvill QUALIFIED
Ricardo GauchoItalyBernardo Dominic NEGOTIATION
Maria MarrierFranceAsiya Javayant RENEWAL
Octavia MaletSpainIoni Bowcher RENEWAL
Tony FollerUnited KingdomOnyama Limba QUALIFIED
Alejandro PerinRussiaAmy Elsner QUALIFIED
Aditya KuskoBrazilXuxue Feng QUALIFIED
Deepesh ChuiBrazilBernardo Dominic QUALIFIED
Maria MarrierGermanyOnyama Limba NEGOTIATION
Clifford RimBrazilAmy Elsner UNQUALIFIED
Stacey MacleadItalyAsiya Javayant PROPOSAL
Misaki RoysterArgentinaXuxue Feng QUALIFIED
Ashley DoeGermanyIvan Magalhaes NEW
Jeanfrancois VenereFranceAsiya Javayant QUALIFIED
Jones VocelkaGermanyIoni Bowcher QUALIFIED
Mayumi KolmetzJapanXuxue Feng RENEWAL
Faith GillianRussiaAsiya Javayant PROPOSAL
Smith GlickSpainAnna Fali QUALIFIED
Munro FerenczAustraliaBernardo Dominic UNQUALIFIED
Tony FollerArgentinaAmy Elsner RENEWAL
Maisha RulapaughSpainOnyama Limba NEGOTIATION
Wickens NestleAustraliaElwin Sharvill UNQUALIFIED
Ashley DoeArgentinaIvan Magalhaes NEGOTIATION
Ricardo GauchoBrazilXuxue Feng QUALIFIED
Maria MarrierFranceIvan Magalhaes UNQUALIFIED
David DarakjyJapanOnyama Limba PROPOSAL
Mayumi KolmetzIndiaAmy Elsner UNQUALIFIED
Ivar PaprockiFranceAnna Fali QUALIFIED
Julie StensethJapanAnna Fali RENEWAL
Jones VocelkaRussiaAmy Elsner PROPOSAL
Salvatore StockhamGermanyElwin Sharvill QUALIFIED
Mujtaba NickaFranceIoni Bowcher QUALIFIED
Adams MorascaJapanElwin Sharvill PROPOSAL
Deepesh ChuiRussiaIoni Bowcher RENEWAL
Sinclair WaycottRussiaAmy Elsner NEW
Aruna FigeroaItalyStephen Shaw NEW
Julie StensethCanadaAsiya Javayant RENEWAL
Cody SaylorsItalyIoni Bowcher NEW
Morrow RutaCanadaBernardo Dominic QUALIFIED
Aruna FigeroaRussiaAmy Elsner 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>