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
Darci PoquetteItalyIvan Magalhaes UNQUALIFIED
Juan WieserFranceAmy Elsner NEGOTIATION
Izzy GarufiIndiaAsiya Javayant NEW
Murillo MaletArgentinaIvan Magalhaes PROPOSAL
Mujtaba NickaItalyIoni Bowcher NEGOTIATION
Murillo MaletUnited KingdomIvan Magalhaes UNQUALIFIED
Alejandro PerinBrazilAmy Elsner UNQUALIFIED
Greenwood BologniaUnited KingdomAnna Fali QUALIFIED
Leja CaldareraFranceElwin Sharvill RENEWAL
Rodrigues CampainAustraliaAmy Elsner NEW
Kaitlin OstroskyRussiaXuxue Feng RENEWAL
Tony FollerGermanyIvan Magalhaes UNQUALIFIED
Tony FollerArgentinaBernardo Dominic NEGOTIATION
Ricardo GauchoItalyIoni Bowcher NEW
Clifford RimSpainAsiya Javayant QUALIFIED
Mayumi KolmetzAustraliaBernardo Dominic NEW
Clifford RimItalyXuxue Feng PROPOSAL
Ashley DoeAustraliaIvan Magalhaes RENEWAL
Aika InouyeRussiaAmy Elsner QUALIFIED
Mujtaba NickaUnited KingdomOnyama Limba UNQUALIFIED
Jones VocelkaIndiaOnyama Limba PROPOSAL
Darci PoquetteItalyAmy Elsner NEW
Tony FollerItalyAsiya Javayant NEW
Rodrigues CampainArgentinaAmy Elsner NEW
Kaitlin OstroskyItalyAnna Fali QUALIFIED
Maisha RulapaughGermanyStephen Shaw PROPOSAL
Wickens NestleFranceIoni Bowcher NEW
Izzy GarufiSpainBernardo Dominic UNQUALIFIED
Silvio SlusarskiItalyOnyama Limba RENEWAL
Antonio CaudyRussiaAmy Elsner RENEWAL
Izzy GarufiArgentinaOnyama Limba PROPOSAL
Adams MorascaItalyIvan Magalhaes NEW
Aruna FigeroaRussiaXuxue Feng UNQUALIFIED
Silvio SlusarskiJapanElwin Sharvill UNQUALIFIED
Mujtaba NickaUnited KingdomXuxue Feng RENEWAL
Aika InouyeIndiaOnyama Limba RENEWAL
Francesco ShinkoUnited KingdomAnna Fali NEGOTIATION
Kaitlin OstroskyGermanyBernardo Dominic RENEWAL
Greenwood BologniaAustraliaXuxue Feng PROPOSAL
Ivar PaprockiCanadaAnna Fali RENEWAL
Salvatore StockhamCanadaIoni Bowcher UNQUALIFIED
Arvin AlbaresJapanElwin Sharvill QUALIFIED
Aika InouyeGermanyIvan Magalhaes NEW
Izzy GarufiUnited KingdomIoni Bowcher NEGOTIATION
Octavia MaletBrazilXuxue Feng QUALIFIED
Faith GillianItalyAsiya Javayant NEGOTIATION
Tony FollerJapanElwin Sharvill UNQUALIFIED
Nicolas IturbideUnited KingdomBernardo Dominic QUALIFIED
Isabel BowleyBrazilXuxue Feng QUALIFIED
Leon OldroydSpainAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Aruna FigeroaSpainElwin Sharvill RENEWAL
Faith GillianAustraliaIvan Magalhaes RENEWAL
Deepesh ChuiItalyAnna Fali UNQUALIFIED
Mujtaba NickaIndiaIoni Bowcher PROPOSAL
Leja CaldareraArgentinaElwin Sharvill UNQUALIFIED
Leon OldroydRussiaXuxue Feng UNQUALIFIED
Jefferson SchemmerArgentinaIvan Magalhaes NEW
Jeanfrancois VenereRussiaIvan Magalhaes NEGOTIATION
Costa DilliardCanadaAsiya Javayant UNQUALIFIED
Aruna FigeroaFranceOnyama Limba PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kaitlin OstroskyJapan2026-04-13Commercial Press UNQUALIFIED79Anna Fali
1001Clifford RimRussia2026-04-09Chanay, Jeffrey A Esq QUALIFIED58Ivan Magalhaes
1002Arvin AlbaresGermany2026-04-16Chemel, James L Cpa QUALIFIED48Asiya Javayant
1003Jeanfrancois VenereCanada2026-04-06Printing Dimensions NEW62Stephen Shaw
1004Murillo MaletCanada2026-04-06Rangoni Of Florence UNQUALIFIED42Bernardo Dominic
1005Salvatore StockhamSpain2026-04-10Benton, John B Jr NEW99Amy Elsner
1006Francesco ShinkoArgentina2026-04-22Printing Dimensions NEW59Bernardo Dominic
1007Leon OldroydRussia2026-04-05Feltz Printing Service NEW27Amy Elsner
1008Isabel BowleyJapan2026-05-01Truhlar And Truhlar Attys QUALIFIED93Amy Elsner
1009Leon OldroydSpain2026-04-13Truhlar And Truhlar Attys RENEWAL56Onyama Limba
1010Francesco ShinkoFrance2026-04-28Commercial Press QUALIFIED99Ivan Magalhaes
1011Aruna FigeroaFrance2026-04-08Truhlar And Truhlar Attys UNQUALIFIED94Ivan Magalhaes
1012Maria MarrierItaly2026-04-06Truhlar And Truhlar Attys UNQUALIFIED43Amy Elsner
1013Aruna FigeroaBrazil2026-04-17Feltz Printing Service RENEWAL71Asiya Javayant
1014David DarakjyUnited Kingdom2026-04-10Rousseaux, Michael Esq NEW50Xuxue Feng
1015Juan WieserArgentina2026-04-21Feiner Bros QUALIFIED63Elwin Sharvill
1016Kaitlin OstroskyAustralia2026-04-11King, Christopher A Esq PROPOSAL67Asiya Javayant
1017Munro FerenczUnited Kingdom2026-04-03Rangoni Of Florence RENEWAL88Ivan Magalhaes
1018Misaki RoysterFrance2026-04-07King, Christopher A Esq QUALIFIED56Elwin Sharvill
1019Aditya KuskoUnited Kingdom2026-04-05Chanay, Jeffrey A Esq PROPOSAL36Bernardo Dominic
1020Chavez BriddickIndia2026-04-03Chapman, Ross E Esq NEGOTIATION75Onyama Limba
1021Izzy GarufiGermany2026-04-04Chanay, Jeffrey A Esq PROPOSAL85Asiya Javayant
1022Faith GillianUnited Kingdom2026-04-25Benton, John B Jr NEW80Stephen Shaw
1023Jennifer AmigonBrazil2026-04-13Truhlar And Truhlar Attys NEGOTIATION26Onyama Limba
1024Deepesh ChuiFrance2026-04-25Commercial Press UNQUALIFIED44Asiya Javayant
1025Aika InouyeUnited Kingdom2026-04-23Benton, John B Jr QUALIFIED20Asiya Javayant
1026Silvio SlusarskiFrance2026-04-07Dorl, James J Esq NEGOTIATION46Asiya Javayant
1027Emily WhobreyRussia2026-04-06Chanay, Jeffrey A Esq QUALIFIED85Ioni Bowcher
1028Ricardo GauchoBrazil2026-04-14Rangoni Of Florence QUALIFIED77Amy Elsner
1029Ricardo GauchoBrazil2026-04-30Chanay, Jeffrey A Esq PROPOSAL21Asiya Javayant
1030Julie StensethIndia2026-04-12Chanay, Jeffrey A Esq UNQUALIFIED12Anna Fali
1031Nicolas IturbideAustralia2026-04-06Chemel, James L Cpa PROPOSAL79Elwin Sharvill
1032Julie StensethSpain2026-04-09Printing Dimensions RENEWAL1Anna Fali
1033Silvio SlusarskiAustralia2026-04-06Truhlar And Truhlar Attys NEGOTIATION85Amy Elsner
1034Emily WhobreySpain2026-04-24Morlong Associates QUALIFIED32Onyama Limba
1035Adams MorascaFrance2026-05-01Buckley Miller Wright UNQUALIFIED52Xuxue Feng
1036Leon OldroydFrance2026-04-18Chanay, Jeffrey A Esq NEGOTIATION92Amy Elsner
1037Chavez BriddickFrance2026-04-07Dorl, James J Esq RENEWAL87Xuxue Feng
1038Stacey MacleadJapan2026-04-17Rangoni Of Florence UNQUALIFIED85Elwin Sharvill
1039Isabel BowleyFrance2026-04-04Chemel, James L Cpa UNQUALIFIED44Stephen Shaw
1040Jefferson SchemmerBrazil2026-04-21Dorl, James J Esq QUALIFIED33Ioni Bowcher
1041Faith GillianCanada2026-04-19Chanay, Jeffrey A Esq RENEWAL84Stephen Shaw
1042Mayumi KolmetzFrance2026-04-20Chemel, James L Cpa PROPOSAL91Xuxue Feng
1043Faith GillianRussia2026-04-19Rangoni Of Florence NEGOTIATION38Amy Elsner
1044Wickens NestleFrance2026-04-08Commercial Press QUALIFIED30Anna Fali
1045Aditya KuskoIndia2026-04-24Chanay, Jeffrey A Esq UNQUALIFIED35Ioni Bowcher
1046Francesco ShinkoBrazil2026-04-28Dorl, James J Esq NEW70Elwin Sharvill
1047Tony FollerArgentina2026-04-26Buckley Miller Wright PROPOSAL43Ioni Bowcher
1048Greenwood BologniaFrance2026-04-09Morlong Associates PROPOSAL90Xuxue Feng
1049Kaitlin OstroskyAustralia2026-04-10Commercial Press NEW23Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Alejandro PerinItalyAsiya Javayant UNQUALIFIED
Stacey MacleadUnited KingdomElwin Sharvill UNQUALIFIED
Leon OldroydUnited KingdomXuxue Feng PROPOSAL
Darci PoquetteIndiaIvan Magalhaes NEW
Arvin AlbaresCanadaAmy Elsner UNQUALIFIED
Aditya KuskoItalyAnna Fali UNQUALIFIED
James ButtJapanIvan Magalhaes UNQUALIFIED
Claire TollnerSpainAmy Elsner QUALIFIED
Rodrigues CampainGermanyIvan Magalhaes RENEWAL
Maisha RulapaughAustraliaIoni Bowcher QUALIFIED
Kadeem FlosiArgentinaAsiya Javayant PROPOSAL
Salvatore StockhamFranceXuxue Feng NEW
Ashley DoeRussiaElwin Sharvill PROPOSAL
Leon OldroydJapanAmy Elsner QUALIFIED
Arvin AlbaresUnited KingdomIvan Magalhaes QUALIFIED
Antonio CaudyUnited KingdomStephen Shaw RENEWAL
Isabel BowleyCanadaAsiya Javayant NEW
Silvio SlusarskiSpainAnna Fali QUALIFIED
Mujtaba NickaCanadaIoni Bowcher NEGOTIATION
Ashley DoeAustraliaIoni Bowcher QUALIFIED
Greenwood BologniaUnited KingdomAmy Elsner NEW
Faith GillianAustraliaBernardo Dominic NEW
Leon OldroydFranceIoni Bowcher UNQUALIFIED
Alejandro PerinUnited KingdomAmy Elsner QUALIFIED
Alejandro PerinIndiaAsiya Javayant PROPOSAL
Faith GillianUnited KingdomIvan Magalhaes RENEWAL
Tony FollerSpainXuxue Feng PROPOSAL
Jones VocelkaCanadaAnna Fali NEGOTIATION
Francesco ShinkoRussiaIvan Magalhaes NEGOTIATION
Ashley DoeFranceStephen Shaw RENEWAL
Isabel BowleyIndiaAsiya Javayant QUALIFIED
Antonio CaudyBrazilBernardo Dominic PROPOSAL
Ashley DoeAustraliaStephen Shaw NEGOTIATION
Misaki RoysterRussiaIoni Bowcher NEW
Chavez BriddickUnited KingdomBernardo Dominic QUALIFIED
Clifford RimRussiaAmy Elsner NEGOTIATION
Maisha RulapaughAustraliaElwin Sharvill NEGOTIATION
Aika InouyeBrazilOnyama Limba PROPOSAL
Mayumi KolmetzRussiaElwin Sharvill PROPOSAL
Jennifer AmigonArgentinaBernardo Dominic NEW
Stacey MacleadItalyXuxue Feng NEGOTIATION
Emily WhobreyFranceAsiya Javayant NEW
Kaitlin OstroskyJapanAsiya Javayant NEW
Mujtaba NickaIndiaXuxue Feng NEW
Mayumi KolmetzArgentinaElwin Sharvill NEGOTIATION
Smith GlickIndiaAnna Fali RENEWAL
Wickens NestleFranceElwin Sharvill UNQUALIFIED
Greenwood BologniaBrazilIoni Bowcher UNQUALIFIED
Jefferson SchemmerArgentinaXuxue Feng NEW
Jennifer AmigonBrazilIoni Bowcher RENEWAL
Frozen Columns
Name
Mayumi Kolmetz
Darci Poquette
Jeanfrancois Venere
Izzy Garufi
Aditya Kusko
Francesco Shinko
Jennifer Amigon
Maisha Rulapaugh
Leja Caldarera
Juan Wieser
Isabel Bowley
Leon Oldroyd
Stacey Maclead
Aika Inouye
Maria Marrier
Sinclair Waycott
Isabel Bowley
Isabel Bowley
Sinclair Waycott
Morrow Ruta
Tony Foller
Izzy Garufi
Emily Whobrey
Johnson Sergi
Aditya Kusko
Juan Wieser
Nicolas Iturbide
Tony Foller
Kaitlin Ostrosky
Jones Vocelka
Smith Glick
Jeanfrancois Venere
Ivar Paprocki
Leon Oldroyd
Kaitlin Ostrosky
Aditya Kusko
David Darakjy
Munro Ferencz
Costa Dilliard
David Darakjy
Stacey Maclead
Alejandro Perin
Kadeem Flosi
Juan Wieser
Kadeem Flosi
Deepesh Chui
Rodrigues Campain
Costa Dilliard
Leja Caldarera
Silvio Slusarski
IdCountryDate
1000Germany2026-04-09
1001Brazil2026-04-28
1002Argentina2026-04-14
1003Spain2026-04-12
1004Germany2026-04-15
1005Canada2026-04-15
1006India2026-04-07
1007Italy2026-04-14
1008Australia2026-04-14
1009Germany2026-04-24
1010France2026-04-27
1011Spain2026-04-08
1012Russia2026-04-29
1013France2026-04-22
1014France2026-04-11
1015Australia2026-04-20
1016Japan2026-04-03
1017Italy2026-05-01
1018Argentina2026-04-09
1019Russia2026-04-08
1020Argentina2026-04-06
1021India2026-04-04
1022Russia2026-04-09
1023Russia2026-04-09
1024Italy2026-04-12
1025Australia2026-04-05
1026Argentina2026-04-06
1027France2026-04-15
1028Russia2026-04-22
1029Brazil2026-04-21
1030United Kingdom2026-04-12
1031Australia2026-04-05
1032Argentina2026-04-08
1033Russia2026-04-12
1034Brazil2026-04-15
1035Argentina2026-04-22
1036Canada2026-04-08
1037India2026-04-06
1038Japan2026-04-21
1039Spain2026-04-29
1040Brazil2026-04-10
1041Italy2026-04-25
1042Russia2026-04-05
1043Japan2026-04-07
1044Italy2026-04-24
1045Australia2026-05-01
1046France2026-04-13
1047France2026-04-10
1048Argentina2026-04-16
1049Italy2026-04-05

On-Demand Data

NameIdCountryDate
Claire Tollner1000Canada2026-04-19
Deepesh Chui1001Spain2026-04-13
Greenwood Bolognia1002India2026-04-14
Mujtaba Nicka1003Australia2026-04-23
Arvin Albares1004United Kingdom2026-04-12
Aruna Figeroa1005France2026-04-19
Aruna Figeroa1006United Kingdom2026-04-06
Aditya Kusko1007India2026-04-15
Ricardo Gaucho1008Argentina2026-04-12
Emily Whobrey1009Argentina2026-04-24
Isabel Bowley1010United Kingdom2026-04-17
Maria Marrier1011Argentina2026-05-01
Faith Gillian1012Japan2026-04-27
Deepesh Chui1013Germany2026-04-23
Chavez Briddick1014Russia2026-04-21
David Darakjy1015Japan2026-04-21
Jennifer Amigon1016Spain2026-04-30
Chavez Briddick1017United Kingdom2026-04-21
Tony Foller1018Argentina2026-04-25
Alejandro Perin1019Canada2026-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jennifer AmigonFranceStephen Shaw RENEWAL
Claire TollnerUnited KingdomAsiya Javayant QUALIFIED
Kadeem FlosiUnited KingdomElwin Sharvill PROPOSAL
Costa DilliardItalyBernardo Dominic NEW
Izzy GarufiSpainAmy Elsner NEGOTIATION
Antonio CaudyBrazilIvan Magalhaes PROPOSAL
Ricardo GauchoArgentinaBernardo Dominic QUALIFIED
Leja CaldareraJapanElwin Sharvill RENEWAL
Deepesh ChuiJapanXuxue Feng NEGOTIATION
David DarakjyAustraliaAnna Fali QUALIFIED
Mujtaba NickaRussiaAnna Fali RENEWAL
Alejandro PerinFranceIvan Magalhaes PROPOSAL
Misaki RoysterSpainElwin Sharvill QUALIFIED
Jefferson SchemmerItalyBernardo Dominic RENEWAL
Arvin AlbaresFranceAnna Fali NEGOTIATION
Costa DilliardFranceXuxue Feng NEGOTIATION
Kadeem FlosiArgentinaOnyama Limba RENEWAL
Aruna FigeroaSpainXuxue Feng NEGOTIATION
Julie StensethCanadaElwin Sharvill QUALIFIED
Emily WhobreySpainAmy Elsner NEW
Clifford RimGermanyXuxue Feng NEW
Silvio SlusarskiBrazilOnyama Limba PROPOSAL
James ButtBrazilElwin Sharvill RENEWAL
James ButtFranceStephen Shaw RENEWAL
Aruna FigeroaSpainXuxue Feng PROPOSAL
Salvatore StockhamRussiaAnna Fali RENEWAL
Salvatore StockhamJapanAsiya Javayant NEW
Ashley DoeIndiaAmy Elsner RENEWAL
Kadeem FlosiCanadaIvan Magalhaes PROPOSAL
Mayumi KolmetzCanadaXuxue Feng NEW
Jones VocelkaFranceAsiya Javayant QUALIFIED
Arvin AlbaresArgentinaOnyama Limba NEGOTIATION
Aika InouyeJapanAmy Elsner NEW
Emily WhobreyFranceAsiya Javayant NEGOTIATION
James ButtJapanAnna Fali RENEWAL
Francesco ShinkoIndiaStephen Shaw PROPOSAL
Rodrigues CampainSpainBernardo Dominic UNQUALIFIED
Aika InouyeCanadaAnna Fali RENEWAL
Silvio SlusarskiIndiaAnna Fali PROPOSAL
Arvin AlbaresBrazilIvan Magalhaes 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>