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
Cody SaylorsUnited KingdomStephen Shaw PROPOSAL
Arvin AlbaresItalyStephen Shaw PROPOSAL
Morrow RutaSpainAsiya Javayant UNQUALIFIED
Ashley DoeFranceElwin Sharvill NEW
Ivar PaprockiIndiaAmy Elsner NEGOTIATION
Francesco ShinkoAustraliaIoni Bowcher RENEWAL
Julie StensethGermanyOnyama Limba NEGOTIATION
Julie StensethUnited KingdomIvan Magalhaes PROPOSAL
Stacey MacleadArgentinaElwin Sharvill NEW
Ricardo GauchoSpainOnyama Limba NEGOTIATION
Morrow RutaFranceStephen Shaw NEGOTIATION
Sinclair WaycottSpainAnna Fali UNQUALIFIED
Faith GillianGermanyBernardo Dominic UNQUALIFIED
Maria MarrierAustraliaIoni Bowcher PROPOSAL
Jones VocelkaGermanyIvan Magalhaes NEGOTIATION
Munro FerenczRussiaIoni Bowcher QUALIFIED
Emily WhobreyBrazilXuxue Feng QUALIFIED
Isabel BowleyRussiaElwin Sharvill UNQUALIFIED
Clifford RimJapanAsiya Javayant RENEWAL
David DarakjyRussiaOnyama Limba UNQUALIFIED
Silvio SlusarskiArgentinaAnna Fali NEGOTIATION
Tony FollerJapanElwin Sharvill QUALIFIED
Mujtaba NickaGermanyAmy Elsner NEGOTIATION
Misaki RoysterArgentinaOnyama Limba PROPOSAL
Juan WieserSpainIvan Magalhaes RENEWAL
Morrow RutaGermanyStephen Shaw PROPOSAL
Ashley DoeJapanStephen Shaw NEGOTIATION
Aruna FigeroaCanadaIvan Magalhaes RENEWAL
Sinclair WaycottJapanOnyama Limba QUALIFIED
Ricardo GauchoUnited KingdomAsiya Javayant NEW
Alejandro PerinItalyXuxue Feng PROPOSAL
Aruna FigeroaCanadaOnyama Limba RENEWAL
Jeanfrancois VenereIndiaStephen Shaw PROPOSAL
Leja CaldareraArgentinaAsiya Javayant PROPOSAL
Johnson SergiBrazilBernardo Dominic NEW
Leja CaldareraGermanyStephen Shaw NEW
Francesco ShinkoArgentinaElwin Sharvill NEGOTIATION
Mujtaba NickaRussiaAsiya Javayant RENEWAL
Murillo MaletJapanAmy Elsner PROPOSAL
Adams MorascaUnited KingdomIvan Magalhaes NEGOTIATION
Adams MorascaRussiaXuxue Feng UNQUALIFIED
Rodrigues CampainItalyBernardo Dominic UNQUALIFIED
Stacey MacleadIndiaXuxue Feng NEGOTIATION
Cody SaylorsRussiaStephen Shaw UNQUALIFIED
Wickens NestleUnited KingdomAnna Fali QUALIFIED
Ashley DoeSpainIvan Magalhaes NEGOTIATION
Kaitlin OstroskyArgentinaXuxue Feng RENEWAL
David DarakjyGermanyStephen Shaw PROPOSAL
Antonio CaudyItalyStephen Shaw RENEWAL
Faith GillianBrazilElwin Sharvill QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Clifford RimUnited KingdomIoni Bowcher RENEWAL
Misaki RoysterFranceAmy Elsner UNQUALIFIED
Izzy GarufiGermanyIoni Bowcher UNQUALIFIED
Alejandro PerinFranceIvan Magalhaes QUALIFIED
Jeanfrancois VenereJapanIvan Magalhaes QUALIFIED
Maisha RulapaughBrazilIvan Magalhaes RENEWAL
Maisha RulapaughBrazilElwin Sharvill NEW
Munro FerenczFranceBernardo Dominic NEW
Ricardo GauchoJapanIvan Magalhaes NEGOTIATION
Jefferson SchemmerUnited KingdomAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Deepesh ChuiCanada2026-05-23Buckley Miller Wright RENEWAL50Elwin Sharvill
1001Nicolas IturbideCanada2026-05-08Rangoni Of Florence PROPOSAL85Amy Elsner
1002Maisha RulapaughArgentina2026-05-04King, Christopher A Esq UNQUALIFIED95Stephen Shaw
1003Aditya KuskoArgentina2026-05-20Chapman, Ross E Esq UNQUALIFIED44Ioni Bowcher
1004David DarakjyJapan2026-05-20Buckley Miller Wright PROPOSAL92Asiya Javayant
1005Leja CaldareraFrance2026-04-30Benton, John B Jr NEGOTIATION47Onyama Limba
1006Tony FollerArgentina2026-05-11Chanay, Jeffrey A Esq UNQUALIFIED38Amy Elsner
1007Francesco ShinkoItaly2026-05-13Chemel, James L Cpa NEW24Anna Fali
1008Silvio SlusarskiCanada2026-05-25Rangoni Of Florence QUALIFIED10Elwin Sharvill
1009Octavia MaletUnited Kingdom2026-05-11Chanay, Jeffrey A Esq RENEWAL91Onyama Limba
1010Deepesh ChuiGermany2026-05-08King, Christopher A Esq NEW98Onyama Limba
1011Stacey MacleadSpain2026-04-27Buckley Miller Wright PROPOSAL67Ioni Bowcher
1012Kaitlin OstroskySpain2026-05-16Buckley Miller Wright NEW30Ivan Magalhaes
1013Izzy GarufiBrazil2026-04-27Benton, John B Jr PROPOSAL3Bernardo Dominic
1014David DarakjyIndia2026-05-13Truhlar And Truhlar Attys PROPOSAL54Onyama Limba
1015Isabel BowleyBrazil2026-05-10Benton, John B Jr RENEWAL17Ivan Magalhaes
1016Stacey MacleadItaly2026-04-29King, Christopher A Esq NEGOTIATION40Asiya Javayant
1017Greenwood BologniaArgentina2026-05-22Dorl, James J Esq QUALIFIED52Ioni Bowcher
1018Juan WieserBrazil2026-05-12Truhlar And Truhlar Attys QUALIFIED29Ioni Bowcher
1019Nicolas IturbideSpain2026-05-21Morlong Associates NEW68Amy Elsner
1020Aruna FigeroaUnited Kingdom2026-05-01Chapman, Ross E Esq NEGOTIATION3Stephen Shaw
1021Jones VocelkaItaly2026-04-27Rousseaux, Michael Esq NEGOTIATION36Anna Fali
1022Claire TollnerUnited Kingdom2026-05-18Feiner Bros NEGOTIATION69Stephen Shaw
1023Kadeem FlosiJapan2026-05-18Chemel, James L Cpa PROPOSAL49Xuxue Feng
1024Isabel BowleyItaly2026-05-11Rangoni Of Florence QUALIFIED23Ivan Magalhaes
1025Salvatore StockhamJapan2026-05-11Dorl, James J Esq NEW45Anna Fali
1026Leja CaldareraCanada2026-04-26Morlong Associates NEW58Amy Elsner
1027Deepesh ChuiSpain2026-05-12Chanay, Jeffrey A Esq UNQUALIFIED3Ioni Bowcher
1028Emily WhobreyRussia2026-05-03Printing Dimensions RENEWAL51Bernardo Dominic
1029Maisha RulapaughGermany2026-05-16Morlong Associates PROPOSAL24Amy Elsner
1030Faith GillianUnited Kingdom2026-05-05Printing Dimensions PROPOSAL56Bernardo Dominic
1031Misaki RoysterAustralia2026-05-09Commercial Press NEW57Stephen Shaw
1032Munro FerenczAustralia2026-05-01Morlong Associates RENEWAL30Xuxue Feng
1033Munro FerenczBrazil2026-05-06Feltz Printing Service UNQUALIFIED93Elwin Sharvill
1034Costa DilliardItaly2026-05-21Benton, John B Jr UNQUALIFIED96Asiya Javayant
1035Francesco ShinkoFrance2026-05-09Feiner Bros UNQUALIFIED80Xuxue Feng
1036Jennifer AmigonSpain2026-05-05Chanay, Jeffrey A Esq RENEWAL22Ivan Magalhaes
1037Costa DilliardJapan2026-05-04Morlong Associates NEGOTIATION14Amy Elsner
1038Ivar PaprockiCanada2026-05-09Buckley Miller Wright UNQUALIFIED91Anna Fali
1039Aika InouyeArgentina2026-05-16Dorl, James J Esq NEW16Asiya Javayant
1040James ButtBrazil2026-05-17Rangoni Of Florence UNQUALIFIED0Bernardo Dominic
1041Aditya KuskoCanada2026-05-21King, Christopher A Esq RENEWAL91Elwin Sharvill
1042Silvio SlusarskiItaly2026-05-20Printing Dimensions NEW19Onyama Limba
1043Silvio SlusarskiAustralia2026-05-07Commercial Press UNQUALIFIED38Xuxue Feng
1044Maria MarrierAustralia2026-05-16Chanay, Jeffrey A Esq QUALIFIED33Ivan Magalhaes
1045Claire TollnerUnited Kingdom2026-05-01Morlong Associates QUALIFIED67Onyama Limba
1046Mujtaba NickaJapan2026-05-14Rousseaux, Michael Esq NEGOTIATION7Stephen Shaw
1047Munro FerenczGermany2026-05-13Rangoni Of Florence PROPOSAL89Amy Elsner
1048Silvio SlusarskiRussia2026-05-15Buckley Miller Wright NEGOTIATION39Asiya Javayant
1049Jeanfrancois VenereSpain2026-05-16Commercial Press PROPOSAL89Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Julie StensethUnited KingdomElwin Sharvill PROPOSAL
Julie StensethCanadaStephen Shaw QUALIFIED
Rodrigues CampainJapanIoni Bowcher PROPOSAL
Emily WhobreyAustraliaIvan Magalhaes QUALIFIED
Claire TollnerIndiaStephen Shaw RENEWAL
Nicolas IturbideSpainIvan Magalhaes NEW
Maria MarrierRussiaXuxue Feng QUALIFIED
Salvatore StockhamRussiaBernardo Dominic PROPOSAL
Kadeem FlosiSpainOnyama Limba PROPOSAL
Silvio SlusarskiJapanElwin Sharvill NEGOTIATION
Leon OldroydUnited KingdomOnyama Limba RENEWAL
Izzy GarufiGermanyAmy Elsner NEW
Misaki RoysterItalyAsiya Javayant QUALIFIED
Emily WhobreyArgentinaAmy Elsner QUALIFIED
Tony FollerGermanyOnyama Limba UNQUALIFIED
Clifford RimJapanXuxue Feng PROPOSAL
Juan WieserItalyAsiya Javayant QUALIFIED
James ButtFranceIoni Bowcher NEGOTIATION
Aika InouyeRussiaIvan Magalhaes PROPOSAL
Kaitlin OstroskyCanadaAnna Fali NEW
Aditya KuskoSpainOnyama Limba QUALIFIED
Darci PoquetteIndiaBernardo Dominic UNQUALIFIED
Chavez BriddickAustraliaAsiya Javayant PROPOSAL
Aditya KuskoGermanyXuxue Feng NEGOTIATION
Deepesh ChuiIndiaElwin Sharvill RENEWAL
Octavia MaletGermanyBernardo Dominic NEGOTIATION
Faith GillianSpainAmy Elsner RENEWAL
Kadeem FlosiAustraliaIvan Magalhaes QUALIFIED
Greenwood BologniaFranceAsiya Javayant UNQUALIFIED
Jefferson SchemmerFranceXuxue Feng NEW
Juan WieserAustraliaElwin Sharvill RENEWAL
Arvin AlbaresCanadaIoni Bowcher PROPOSAL
Aruna FigeroaSpainIoni Bowcher PROPOSAL
Ivar PaprockiItalyXuxue Feng NEW
Kaitlin OstroskyUnited KingdomIvan Magalhaes NEW
Tony FollerBrazilIoni Bowcher QUALIFIED
Murillo MaletCanadaIoni Bowcher RENEWAL
Costa DilliardArgentinaAnna Fali PROPOSAL
Alejandro PerinIndiaAsiya Javayant UNQUALIFIED
Silvio SlusarskiRussiaIoni Bowcher UNQUALIFIED
Emily WhobreyUnited KingdomOnyama Limba NEGOTIATION
Clifford RimBrazilElwin Sharvill NEW
Maisha RulapaughSpainElwin Sharvill UNQUALIFIED
Julie StensethSpainAsiya Javayant UNQUALIFIED
Greenwood BologniaItalyStephen Shaw QUALIFIED
Misaki RoysterItalyBernardo Dominic PROPOSAL
Alejandro PerinGermanyAmy Elsner RENEWAL
Darci PoquetteAustraliaAnna Fali UNQUALIFIED
Arvin AlbaresAustraliaXuxue Feng NEW
Kaitlin OstroskySpainIoni Bowcher RENEWAL
Frozen Columns
Name
Murillo Malet
Ashley Doe
Deepesh Chui
Aika Inouye
Darci Poquette
Aditya Kusko
James Butt
Morrow Ruta
Rodrigues Campain
Silvio Slusarski
Tony Foller
Alejandro Perin
Greenwood Bolognia
Jefferson Schemmer
Julie Stenseth
Murillo Malet
Misaki Royster
Jeanfrancois Venere
Mayumi Kolmetz
Deepesh Chui
Ricardo Gaucho
Antonio Caudy
Isabel Bowley
Chavez Briddick
Faith Gillian
Jennifer Amigon
Ricardo Gaucho
Maria Marrier
Jeanfrancois Venere
Munro Ferencz
Murillo Malet
Izzy Garufi
Mujtaba Nicka
Costa Dilliard
Sinclair Waycott
Kadeem Flosi
Wickens Nestle
Ivar Paprocki
Salvatore Stockham
Darci Poquette
Antonio Caudy
Misaki Royster
David Darakjy
Munro Ferencz
Rodrigues Campain
Stacey Maclead
Aditya Kusko
Isabel Bowley
Rodrigues Campain
Juan Wieser
IdCountryDate
1000France2026-04-28
1001United Kingdom2026-04-29
1002Japan2026-04-27
1003Germany2026-04-26
1004Italy2026-05-05
1005Brazil2026-05-05
1006France2026-05-20
1007Brazil2026-05-05
1008Argentina2026-05-05
1009Germany2026-05-01
1010United Kingdom2026-04-26
1011France2026-05-24
1012Australia2026-05-12
1013United Kingdom2026-04-28
1014Italy2026-05-15
1015Germany2026-05-17
1016Italy2026-05-22
1017Australia2026-05-01
1018Australia2026-04-28
1019India2026-04-27
1020Italy2026-04-29
1021Australia2026-04-28
1022Russia2026-05-20
1023United Kingdom2026-05-09
1024United Kingdom2026-05-04
1025Italy2026-05-20
1026Brazil2026-05-18
1027Germany2026-05-04
1028Canada2026-05-07
1029Australia2026-05-15
1030Spain2026-05-17
1031Australia2026-05-09
1032Germany2026-04-27
1033Japan2026-05-05
1034Australia2026-05-18
1035Italy2026-05-10
1036Germany2026-05-07
1037France2026-05-12
1038Russia2026-05-02
1039Canada2026-05-21
1040Italy2026-05-02
1041Argentina2026-05-24
1042Germany2026-05-22
1043Argentina2026-05-23
1044Germany2026-05-17
1045Spain2026-05-01
1046Italy2026-05-04
1047Australia2026-05-17
1048France2026-05-03
1049Germany2026-05-17

On-Demand Data

NameIdCountryDate
Arvin Albares1000United Kingdom2026-04-30
Julie Stenseth1001Germany2026-05-22
Aruna Figeroa1002United Kingdom2026-05-23
Tony Foller1003India2026-05-10
Adams Morasca1004Australia2026-05-15
Alejandro Perin1005Argentina2026-05-03
Juan Wieser1006Italy2026-05-24
Clifford Rim1007Argentina2026-05-21
Adams Morasca1008Italy2026-05-24
Munro Ferencz1009Germany2026-05-12
Morrow Ruta1010United Kingdom2026-04-27
Adams Morasca1011Spain2026-05-13
Antonio Caudy1012Japan2026-05-23
Sinclair Waycott1013Canada2026-05-23
Morrow Ruta1014United Kingdom2026-05-22
Stacey Maclead1015Germany2026-04-27
Mayumi Kolmetz1016Brazil2026-04-29
Clifford Rim1017Italy2026-04-28
David Darakjy1018Australia2026-05-25
Ricardo Gaucho1019Australia2026-05-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro PerinCanadaAmy Elsner QUALIFIED
Nicolas IturbideAustraliaIvan Magalhaes UNQUALIFIED
Johnson SergiCanadaOnyama Limba QUALIFIED
Aditya KuskoGermanyXuxue Feng UNQUALIFIED
Johnson SergiArgentinaAsiya Javayant QUALIFIED
Johnson SergiBrazilIvan Magalhaes NEGOTIATION
Jones VocelkaFranceElwin Sharvill PROPOSAL
Kadeem FlosiCanadaBernardo Dominic RENEWAL
Cody SaylorsFranceStephen Shaw PROPOSAL
Johnson SergiUnited KingdomAnna Fali NEGOTIATION
Murillo MaletItalyAmy Elsner NEW
Faith GillianJapanOnyama Limba PROPOSAL
Faith GillianAustraliaXuxue Feng UNQUALIFIED
Mayumi KolmetzJapanOnyama Limba NEW
Rodrigues CampainAustraliaStephen Shaw NEGOTIATION
Jeanfrancois VenereArgentinaIvan Magalhaes UNQUALIFIED
Jones VocelkaArgentinaXuxue Feng UNQUALIFIED
James ButtItalyIoni Bowcher RENEWAL
Emily WhobreySpainBernardo Dominic UNQUALIFIED
Ivar PaprockiUnited KingdomElwin Sharvill RENEWAL
Maisha RulapaughArgentinaAnna Fali QUALIFIED
Salvatore StockhamIndiaAsiya Javayant UNQUALIFIED
Leon OldroydJapanAmy Elsner UNQUALIFIED
Aruna FigeroaFranceOnyama Limba QUALIFIED
Chavez BriddickAustraliaBernardo Dominic QUALIFIED
Arvin AlbaresArgentinaAnna Fali NEGOTIATION
Antonio CaudyFranceAmy Elsner NEGOTIATION
David DarakjyIndiaIoni Bowcher NEGOTIATION
Izzy GarufiUnited KingdomIoni Bowcher NEGOTIATION
Arvin AlbaresGermanyElwin Sharvill UNQUALIFIED
Leon OldroydGermanyAsiya Javayant QUALIFIED
Darci PoquetteJapanStephen Shaw RENEWAL
Darci PoquetteFranceAnna Fali NEGOTIATION
Jennifer AmigonArgentinaAsiya Javayant UNQUALIFIED
Wickens NestleIndiaXuxue Feng QUALIFIED
Stacey MacleadRussiaAnna Fali UNQUALIFIED
Isabel BowleyGermanyElwin Sharvill RENEWAL
Kaitlin OstroskySpainOnyama Limba UNQUALIFIED
Ricardo GauchoBrazilXuxue Feng QUALIFIED
Isabel BowleyBrazilIvan 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>