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
Arvin AlbaresFranceAnna Fali NEW
Juan WieserFranceAmy Elsner NEGOTIATION
Stacey MacleadCanadaIoni Bowcher RENEWAL
Rodrigues CampainJapanIvan Magalhaes NEGOTIATION
Julie StensethArgentinaAnna Fali PROPOSAL
Sinclair WaycottSpainXuxue Feng NEW
James ButtItalyStephen Shaw RENEWAL
Ashley DoeSpainOnyama Limba PROPOSAL
Johnson SergiIndiaOnyama Limba PROPOSAL
Maria MarrierJapanIoni Bowcher PROPOSAL
Munro FerenczUnited KingdomOnyama Limba PROPOSAL
Julie StensethCanadaOnyama Limba QUALIFIED
Emily WhobreyJapanStephen Shaw UNQUALIFIED
Kadeem FlosiUnited KingdomOnyama Limba NEGOTIATION
Aika InouyeBrazilAnna Fali QUALIFIED
Isabel BowleyAustraliaAnna Fali NEW
Aditya KuskoCanadaStephen Shaw QUALIFIED
Deepesh ChuiAustraliaAnna Fali NEGOTIATION
Munro FerenczGermanyAnna Fali QUALIFIED
Juan WieserIndiaXuxue Feng NEGOTIATION
Aditya KuskoIndiaElwin Sharvill PROPOSAL
Leja CaldareraFranceAsiya Javayant RENEWAL
Aditya KuskoGermanyOnyama Limba PROPOSAL
Aruna FigeroaCanadaIoni Bowcher NEW
Alejandro PerinRussiaXuxue Feng RENEWAL
Costa DilliardItalyElwin Sharvill RENEWAL
Jefferson SchemmerBrazilOnyama Limba QUALIFIED
Nicolas IturbideItalyAsiya Javayant PROPOSAL
Ashley DoeSpainXuxue Feng QUALIFIED
Claire TollnerUnited KingdomBernardo Dominic NEW
Isabel BowleyAustraliaBernardo Dominic RENEWAL
Smith GlickSpainElwin Sharvill UNQUALIFIED
Stacey MacleadFranceAmy Elsner NEGOTIATION
Claire TollnerRussiaStephen Shaw QUALIFIED
Juan WieserFranceElwin Sharvill NEW
Alejandro PerinCanadaBernardo Dominic NEGOTIATION
Smith GlickItalyAmy Elsner UNQUALIFIED
Jennifer AmigonUnited KingdomXuxue Feng QUALIFIED
Jones VocelkaSpainAsiya Javayant NEW
Julie StensethRussiaBernardo Dominic QUALIFIED
James ButtSpainElwin Sharvill NEW
Kadeem FlosiArgentinaOnyama Limba RENEWAL
Jennifer AmigonAustraliaStephen Shaw UNQUALIFIED
Alejandro PerinJapanAsiya Javayant NEW
Faith GillianUnited KingdomStephen Shaw PROPOSAL
Chavez BriddickIndiaElwin Sharvill PROPOSAL
Ivar PaprockiAustraliaBernardo Dominic PROPOSAL
Rodrigues CampainBrazilOnyama Limba RENEWAL
Silvio SlusarskiCanadaStephen Shaw RENEWAL
Kaitlin OstroskyGermanyAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Juan WieserItalyAmy Elsner QUALIFIED
Ashley DoeUnited KingdomStephen Shaw PROPOSAL
Maria MarrierUnited KingdomAmy Elsner RENEWAL
Deepesh ChuiSpainXuxue Feng NEGOTIATION
Costa DilliardArgentinaIvan Magalhaes NEW
Alejandro PerinIndiaIoni Bowcher NEGOTIATION
Darci PoquetteRussiaIvan Magalhaes RENEWAL
Aditya KuskoCanadaBernardo Dominic NEW
Kaitlin OstroskyFranceAmy Elsner NEGOTIATION
Adams MorascaUnited KingdomBernardo Dominic QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa DilliardArgentina2026-05-14Chanay, Jeffrey A Esq RENEWAL41Bernardo Dominic
1001Ivar PaprockiSpain2026-05-30Dorl, James J Esq NEGOTIATION67Bernardo Dominic
1002Ivar PaprockiGermany2026-05-12Chapman, Ross E Esq QUALIFIED95Elwin Sharvill
1003Tony FollerJapan2026-05-22Chapman, Ross E Esq QUALIFIED94Ivan Magalhaes
1004Nicolas IturbideItaly2026-05-29Rousseaux, Michael Esq NEGOTIATION16Amy Elsner
1005James ButtBrazil2026-05-15Commercial Press QUALIFIED83Xuxue Feng
1006Claire TollnerFrance2026-05-30Printing Dimensions NEGOTIATION83Stephen Shaw
1007Adams MorascaCanada2026-05-26Rangoni Of Florence RENEWAL26Anna Fali
1008Izzy GarufiCanada2026-05-18Benton, John B Jr PROPOSAL90Elwin Sharvill
1009David DarakjyAustralia2026-06-01Printing Dimensions RENEWAL75Bernardo Dominic
1010Maria MarrierArgentina2026-05-18Dorl, James J Esq NEW74Onyama Limba
1011Aruna FigeroaItaly2026-05-11Rangoni Of Florence RENEWAL70Anna Fali
1012James ButtUnited Kingdom2026-05-20King, Christopher A Esq NEGOTIATION26Ivan Magalhaes
1013Kadeem FlosiBrazil2026-06-02Chapman, Ross E Esq RENEWAL49Amy Elsner
1014Cody SaylorsUnited Kingdom2026-05-30Chemel, James L Cpa QUALIFIED29Onyama Limba
1015Chavez BriddickArgentina2026-05-19Morlong Associates NEW23Xuxue Feng
1016Faith GillianArgentina2026-06-08King, Christopher A Esq NEW91Bernardo Dominic
1017Murillo MaletAustralia2026-06-08Chemel, James L Cpa NEGOTIATION99Ioni Bowcher
1018Faith GillianFrance2026-05-23Chemel, James L Cpa RENEWAL8Xuxue Feng
1019Juan WieserAustralia2026-06-02Truhlar And Truhlar Attys UNQUALIFIED5Amy Elsner
1020Johnson SergiCanada2026-05-17Buckley Miller Wright NEGOTIATION0Xuxue Feng
1021Misaki RoysterGermany2026-05-26Commercial Press RENEWAL54Anna Fali
1022Kadeem FlosiRussia2026-05-19Rangoni Of Florence NEW63Stephen Shaw
1023Deepesh ChuiItaly2026-05-24Morlong Associates UNQUALIFIED28Stephen Shaw
1024Morrow RutaGermany2026-06-08Feltz Printing Service QUALIFIED9Stephen Shaw
1025Tony FollerGermany2026-05-23Dorl, James J Esq NEW43Elwin Sharvill
1026Aika InouyeFrance2026-05-23Truhlar And Truhlar Attys UNQUALIFIED31Anna Fali
1027Greenwood BologniaBrazil2026-05-15Chapman, Ross E Esq NEGOTIATION93Elwin Sharvill
1028Mujtaba NickaFrance2026-06-01Dorl, James J Esq NEGOTIATION2Amy Elsner
1029Julie StensethFrance2026-05-13King, Christopher A Esq PROPOSAL22Xuxue Feng
1030Jefferson SchemmerSpain2026-05-12Printing Dimensions QUALIFIED5Ivan Magalhaes
1031Clifford RimFrance2026-05-20Printing Dimensions NEGOTIATION88Asiya Javayant
1032Salvatore StockhamJapan2026-05-20Feltz Printing Service RENEWAL70Asiya Javayant
1033Rodrigues CampainArgentina2026-06-02Feltz Printing Service PROPOSAL93Anna Fali
1034Juan WieserUnited Kingdom2026-05-23Feiner Bros NEGOTIATION9Elwin Sharvill
1035Ashley DoeFrance2026-06-08Feiner Bros PROPOSAL31Elwin Sharvill
1036Jefferson SchemmerJapan2026-06-01Dorl, James J Esq QUALIFIED62Onyama Limba
1037Costa DilliardItaly2026-06-05Feiner Bros QUALIFIED70Ioni Bowcher
1038Jefferson SchemmerFrance2026-06-03Truhlar And Truhlar Attys NEW54Asiya Javayant
1039Ricardo GauchoBrazil2026-05-15Rangoni Of Florence RENEWAL16Bernardo Dominic
1040Jeanfrancois VenereCanada2026-05-19Truhlar And Truhlar Attys PROPOSAL38Asiya Javayant
1041Greenwood BologniaJapan2026-05-20Buckley Miller Wright RENEWAL59Elwin Sharvill
1042Isabel BowleyIndia2026-05-14Commercial Press NEGOTIATION36Xuxue Feng
1043Mayumi KolmetzGermany2026-06-03Buckley Miller Wright UNQUALIFIED72Ivan Magalhaes
1044Nicolas IturbideJapan2026-06-06Rousseaux, Michael Esq NEW85Stephen Shaw
1045Aditya KuskoCanada2026-05-10Chapman, Ross E Esq QUALIFIED34Anna Fali
1046Darci PoquetteSpain2026-06-02Dorl, James J Esq PROPOSAL98Xuxue Feng
1047Maria MarrierFrance2026-06-06Rousseaux, Michael Esq QUALIFIED18Onyama Limba
1048Arvin AlbaresJapan2026-05-18Printing Dimensions PROPOSAL73Onyama Limba
1049Mayumi KolmetzAustralia2026-05-18Commercial Press PROPOSAL45Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Kadeem FlosiBrazilAnna Fali NEGOTIATION
Jennifer AmigonCanadaStephen Shaw UNQUALIFIED
Jefferson SchemmerCanadaAsiya Javayant NEGOTIATION
Kadeem FlosiCanadaStephen Shaw PROPOSAL
Faith GillianAustraliaIoni Bowcher RENEWAL
Adams MorascaCanadaStephen Shaw UNQUALIFIED
Deepesh ChuiGermanyStephen Shaw NEGOTIATION
Misaki RoysterRussiaIoni Bowcher RENEWAL
Kaitlin OstroskySpainAnna Fali PROPOSAL
Juan WieserJapanIvan Magalhaes PROPOSAL
Rodrigues CampainAustraliaAmy Elsner NEW
Emily WhobreyRussiaElwin Sharvill UNQUALIFIED
Leon OldroydBrazilAsiya Javayant QUALIFIED
Salvatore StockhamIndiaIoni Bowcher RENEWAL
Ivar PaprockiIndiaAmy Elsner QUALIFIED
Maria MarrierAustraliaAsiya Javayant PROPOSAL
Arvin AlbaresFranceAmy Elsner NEGOTIATION
Juan WieserFranceIoni Bowcher RENEWAL
Mayumi KolmetzArgentinaIvan Magalhaes QUALIFIED
Smith GlickRussiaAmy Elsner QUALIFIED
Julie StensethGermanyAmy Elsner RENEWAL
Maisha RulapaughItalyAnna Fali PROPOSAL
Alejandro PerinFranceStephen Shaw QUALIFIED
Darci PoquetteItalyAmy Elsner UNQUALIFIED
Emily WhobreyGermanyXuxue Feng QUALIFIED
Sinclair WaycottCanadaAmy Elsner UNQUALIFIED
Leja CaldareraArgentinaElwin Sharvill NEW
Adams MorascaFranceAsiya Javayant RENEWAL
Clifford RimSpainIoni Bowcher NEGOTIATION
James ButtUnited KingdomAnna Fali PROPOSAL
Misaki RoysterItalyIoni Bowcher QUALIFIED
Alejandro PerinJapanXuxue Feng PROPOSAL
Julie StensethCanadaBernardo Dominic NEW
Jennifer AmigonUnited KingdomElwin Sharvill PROPOSAL
Rodrigues CampainCanadaBernardo Dominic NEGOTIATION
Munro FerenczUnited KingdomStephen Shaw NEGOTIATION
Antonio CaudyBrazilAmy Elsner RENEWAL
Claire TollnerArgentinaIvan Magalhaes NEGOTIATION
Jennifer AmigonIndiaAnna Fali PROPOSAL
Sinclair WaycottAustraliaIvan Magalhaes RENEWAL
Julie StensethUnited KingdomXuxue Feng NEW
Emily WhobreyFranceAsiya Javayant QUALIFIED
Sinclair WaycottAustraliaXuxue Feng NEGOTIATION
Morrow RutaFranceIvan Magalhaes QUALIFIED
Alejandro PerinBrazilIvan Magalhaes UNQUALIFIED
Munro FerenczRussiaIoni Bowcher NEGOTIATION
Maria MarrierAustraliaXuxue Feng UNQUALIFIED
Juan WieserArgentinaOnyama Limba NEGOTIATION
Misaki RoysterFranceIoni Bowcher NEGOTIATION
Stacey MacleadJapanStephen Shaw RENEWAL
Frozen Columns
Name
Stacey Maclead
Leja Caldarera
Greenwood Bolognia
Murillo Malet
Izzy Garufi
Cody Saylors
Smith Glick
Faith Gillian
Murillo Malet
Jeanfrancois Venere
Morrow Ruta
Ivar Paprocki
Juan Wieser
Jefferson Schemmer
Salvatore Stockham
Francesco Shinko
Emily Whobrey
Aditya Kusko
Johnson Sergi
Mujtaba Nicka
Chavez Briddick
Munro Ferencz
Kaitlin Ostrosky
Murillo Malet
Mayumi Kolmetz
Silvio Slusarski
Murillo Malet
Greenwood Bolognia
Emily Whobrey
Murillo Malet
Johnson Sergi
David Darakjy
Octavia Malet
Julie Stenseth
Faith Gillian
Isabel Bowley
Aditya Kusko
Tony Foller
Mayumi Kolmetz
Mayumi Kolmetz
Ricardo Gaucho
Greenwood Bolognia
Adams Morasca
Arvin Albares
Chavez Briddick
Tony Foller
Juan Wieser
Kadeem Flosi
Jeanfrancois Venere
Aika Inouye
IdCountryDate
1000Italy2026-05-29
1001Spain2026-05-25
1002United Kingdom2026-05-30
1003Spain2026-05-22
1004Germany2026-06-01
1005India2026-05-18
1006Japan2026-06-04
1007Australia2026-05-10
1008Italy2026-05-23
1009France2026-05-13
1010Italy2026-05-18
1011Russia2026-05-21
1012Russia2026-05-23
1013Russia2026-06-07
1014Germany2026-05-25
1015Japan2026-05-15
1016Germany2026-06-06
1017Italy2026-06-02
1018Brazil2026-05-18
1019Germany2026-05-25
1020Brazil2026-06-01
1021Brazil2026-05-27
1022Spain2026-05-26
1023France2026-05-17
1024United Kingdom2026-06-01
1025Italy2026-05-18
1026India2026-05-30
1027India2026-05-30
1028Russia2026-05-12
1029Argentina2026-05-25
1030Argentina2026-05-31
1031Canada2026-05-24
1032Brazil2026-05-25
1033Canada2026-05-12
1034Brazil2026-05-23
1035Russia2026-06-06
1036Germany2026-05-22
1037Argentina2026-06-02
1038Germany2026-05-26
1039Brazil2026-05-29
1040Italy2026-06-08
1041Canada2026-05-19
1042Russia2026-05-27
1043Germany2026-05-25
1044Japan2026-06-08
1045Australia2026-05-30
1046Russia2026-06-08
1047Spain2026-05-21
1048Germany2026-05-18
1049Germany2026-05-14

On-Demand Data

NameIdCountryDate
Jennifer Amigon1000Russia2026-05-10
Munro Ferencz1001Brazil2026-05-13
Jones Vocelka1002Spain2026-05-16
Antonio Caudy1003Germany2026-05-31
Arvin Albares1004India2026-05-17
Cody Saylors1005India2026-05-29
Morrow Ruta1006Japan2026-06-06
Julie Stenseth1007Germany2026-05-25
Costa Dilliard1008Italy2026-05-16
Ashley Doe1009Russia2026-05-17
Greenwood Bolognia1010Russia2026-05-24
Mayumi Kolmetz1011Brazil2026-05-11
Faith Gillian1012Russia2026-06-04
Francesco Shinko1013Canada2026-05-10
Julie Stenseth1014Russia2026-05-12
Johnson Sergi1015Brazil2026-06-06
Sinclair Waycott1016Australia2026-05-11
Juan Wieser1017France2026-05-20
Nicolas Iturbide1018Spain2026-05-29
Izzy Garufi1019Italy2026-05-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika InouyeFranceAmy Elsner UNQUALIFIED
Ashley DoeArgentinaAmy Elsner PROPOSAL
Jennifer AmigonAustraliaAnna Fali UNQUALIFIED
Juan WieserBrazilAnna Fali NEGOTIATION
Nicolas IturbideCanadaOnyama Limba RENEWAL
Maria MarrierCanadaIoni Bowcher NEGOTIATION
Sinclair WaycottUnited KingdomBernardo Dominic NEGOTIATION
Tony FollerArgentinaIvan Magalhaes NEGOTIATION
Juan WieserGermanyAsiya Javayant UNQUALIFIED
Francesco ShinkoJapanAsiya Javayant UNQUALIFIED
Aditya KuskoCanadaBernardo Dominic PROPOSAL
Isabel BowleyFranceBernardo Dominic QUALIFIED
Morrow RutaCanadaAsiya Javayant NEGOTIATION
Ashley DoeItalyStephen Shaw QUALIFIED
Alejandro PerinCanadaStephen Shaw RENEWAL
Leja CaldareraIndiaXuxue Feng RENEWAL
Izzy GarufiUnited KingdomAsiya Javayant UNQUALIFIED
Cody SaylorsAustraliaIoni Bowcher NEGOTIATION
Johnson SergiIndiaAmy Elsner NEGOTIATION
Arvin AlbaresBrazilIvan Magalhaes NEGOTIATION
Arvin AlbaresJapanIvan Magalhaes QUALIFIED
Darci PoquetteGermanyXuxue Feng NEGOTIATION
David DarakjyAustraliaAnna Fali UNQUALIFIED
Jeanfrancois VenereIndiaXuxue Feng NEGOTIATION
Johnson SergiIndiaOnyama Limba UNQUALIFIED
Francesco ShinkoArgentinaIoni Bowcher NEGOTIATION
Mayumi KolmetzGermanyStephen Shaw UNQUALIFIED
Leon OldroydIndiaAnna Fali NEW
Nicolas IturbideUnited KingdomXuxue Feng QUALIFIED
Aruna FigeroaAustraliaXuxue Feng RENEWAL
Misaki RoysterAustraliaIvan Magalhaes QUALIFIED
Ricardo GauchoIndiaAsiya Javayant NEGOTIATION
Tony FollerArgentinaElwin Sharvill UNQUALIFIED
Ivar PaprockiJapanIvan Magalhaes RENEWAL
Salvatore StockhamAustraliaAnna Fali NEGOTIATION
Misaki RoysterUnited KingdomAnna Fali PROPOSAL
David DarakjyArgentinaBernardo Dominic RENEWAL
Isabel BowleyJapanOnyama Limba QUALIFIED
Murillo MaletSpainIvan Magalhaes NEGOTIATION
Kaitlin OstroskyArgentinaStephen Shaw NEGOTIATION

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