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
Rodrigues CampainJapanIvan Magalhaes UNQUALIFIED
Chavez BriddickBrazilAnna Fali NEW
Aika InouyeGermanyOnyama Limba QUALIFIED
Johnson SergiArgentinaBernardo Dominic RENEWAL
Antonio CaudyJapanIvan Magalhaes UNQUALIFIED
Sinclair WaycottSpainXuxue Feng PROPOSAL
Smith GlickAustraliaBernardo Dominic QUALIFIED
Francesco ShinkoRussiaOnyama Limba PROPOSAL
Aika InouyeRussiaAmy Elsner PROPOSAL
Aika InouyeBrazilElwin Sharvill QUALIFIED
Wickens NestleAustraliaIvan Magalhaes PROPOSAL
Arvin AlbaresSpainElwin Sharvill RENEWAL
Greenwood BologniaJapanOnyama Limba RENEWAL
Clifford RimJapanAmy Elsner UNQUALIFIED
Aruna FigeroaArgentinaIoni Bowcher NEGOTIATION
Sinclair WaycottBrazilIvan Magalhaes NEW
Leja CaldareraSpainOnyama Limba NEGOTIATION
Maria MarrierArgentinaOnyama Limba UNQUALIFIED
Leja CaldareraFranceAsiya Javayant PROPOSAL
Kaitlin OstroskyFranceAsiya Javayant NEGOTIATION
Murillo MaletCanadaOnyama Limba NEGOTIATION
Claire TollnerBrazilBernardo Dominic PROPOSAL
Misaki RoysterArgentinaIvan Magalhaes RENEWAL
Tony FollerCanadaAmy Elsner QUALIFIED
Jones VocelkaItalyOnyama Limba QUALIFIED
Alejandro PerinIndiaBernardo Dominic PROPOSAL
Wickens NestleJapanAmy Elsner NEGOTIATION
Emily WhobreyCanadaXuxue Feng NEW
Kaitlin OstroskyFranceIoni Bowcher UNQUALIFIED
Emily WhobreyGermanyOnyama Limba RENEWAL
Juan WieserAustraliaIoni Bowcher NEGOTIATION
Ricardo GauchoSpainAsiya Javayant NEGOTIATION
Tony FollerAustraliaElwin Sharvill RENEWAL
Adams MorascaJapanStephen Shaw PROPOSAL
Maria MarrierUnited KingdomOnyama Limba RENEWAL
Adams MorascaItalyAsiya Javayant UNQUALIFIED
Emily WhobreyRussiaStephen Shaw QUALIFIED
Ricardo GauchoArgentinaOnyama Limba PROPOSAL
Arvin AlbaresArgentinaElwin Sharvill RENEWAL
Kadeem FlosiFranceAnna Fali NEW
Isabel BowleyBrazilIvan Magalhaes PROPOSAL
Jones VocelkaUnited KingdomBernardo Dominic QUALIFIED
Johnson SergiAustraliaAsiya Javayant QUALIFIED
Antonio CaudyGermanyXuxue Feng NEW
Murillo MaletIndiaBernardo Dominic NEGOTIATION
Greenwood BologniaAustraliaAnna Fali PROPOSAL
Mayumi KolmetzIndiaBernardo Dominic NEW
Mujtaba NickaArgentinaAnna Fali NEW
Silvio SlusarskiBrazilBernardo Dominic QUALIFIED
Munro FerenczSpainIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Arvin AlbaresAustraliaBernardo Dominic PROPOSAL
Silvio SlusarskiItalyIvan Magalhaes PROPOSAL
Darci PoquetteAustraliaXuxue Feng NEW
Tony FollerIndiaIoni Bowcher UNQUALIFIED
Munro FerenczFranceElwin Sharvill NEW
Isabel BowleyFranceAmy Elsner NEW
Ivar PaprockiUnited KingdomIoni Bowcher UNQUALIFIED
Deepesh ChuiIndiaAsiya Javayant NEGOTIATION
Wickens NestleIndiaAsiya Javayant UNQUALIFIED
Maria MarrierBrazilAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues CampainUnited Kingdom2026-04-28Buckley Miller Wright QUALIFIED96Asiya Javayant
1001Misaki RoysterUnited Kingdom2026-05-07Chanay, Jeffrey A Esq PROPOSAL92Anna Fali
1002Mujtaba NickaGermany2026-05-26Chanay, Jeffrey A Esq RENEWAL70Onyama Limba
1003Salvatore StockhamUnited Kingdom2026-05-20Benton, John B Jr PROPOSAL28Amy Elsner
1004Ivar PaprockiRussia2026-05-09Benton, John B Jr UNQUALIFIED5Xuxue Feng
1005Chavez BriddickArgentina2026-05-17Rousseaux, Michael Esq NEW18Anna Fali
1006Costa DilliardAustralia2026-05-17Feltz Printing Service PROPOSAL73Anna Fali
1007Stacey MacleadSpain2026-05-15Feltz Printing Service NEW58Asiya Javayant
1008Silvio SlusarskiIndia2026-05-15Feltz Printing Service PROPOSAL84Xuxue Feng
1009Greenwood BologniaJapan2026-05-02King, Christopher A Esq PROPOSAL56Ivan Magalhaes
1010Aditya KuskoIndia2026-04-28Printing Dimensions UNQUALIFIED10Asiya Javayant
1011Antonio CaudySpain2026-05-15Rousseaux, Michael Esq NEW56Anna Fali
1012James ButtSpain2026-05-08Morlong Associates QUALIFIED78Asiya Javayant
1013Mujtaba NickaItaly2026-05-02Chapman, Ross E Esq NEGOTIATION42Bernardo Dominic
1014Arvin AlbaresSpain2026-05-19Dorl, James J Esq NEW23Anna Fali
1015Jeanfrancois VenereUnited Kingdom2026-04-27King, Christopher A Esq PROPOSAL81Xuxue Feng
1016Ivar PaprockiJapan2026-05-07Rousseaux, Michael Esq PROPOSAL35Amy Elsner
1017Ashley DoeSpain2026-05-21Dorl, James J Esq RENEWAL80Stephen Shaw
1018Arvin AlbaresBrazil2026-05-17Rousseaux, Michael Esq RENEWAL42Ivan Magalhaes
1019Julie StensethBrazil2026-05-19Morlong Associates PROPOSAL72Xuxue Feng
1020Jefferson SchemmerAustralia2026-05-13Benton, John B Jr NEGOTIATION81Asiya Javayant
1021Maisha RulapaughSpain2026-05-15Feltz Printing Service RENEWAL0Bernardo Dominic
1022Claire TollnerIndia2026-05-25Rangoni Of Florence RENEWAL91Elwin Sharvill
1023Clifford RimJapan2026-05-18Rangoni Of Florence UNQUALIFIED4Onyama Limba
1024Jennifer AmigonUnited Kingdom2026-05-05Feltz Printing Service PROPOSAL58Ioni Bowcher
1025Jefferson SchemmerAustralia2026-05-22Commercial Press QUALIFIED13Xuxue Feng
1026Murillo MaletUnited Kingdom2026-05-25Printing Dimensions NEGOTIATION50Onyama Limba
1027Jeanfrancois VenereGermany2026-05-23Feiner Bros NEW39Elwin Sharvill
1028Izzy GarufiSpain2026-05-26Morlong Associates RENEWAL55Amy Elsner
1029Munro FerenczSpain2026-05-13Buckley Miller Wright RENEWAL2Amy Elsner
1030Salvatore StockhamRussia2026-05-26Chapman, Ross E Esq RENEWAL10Stephen Shaw
1031Clifford RimSpain2026-05-01Commercial Press NEW88Stephen Shaw
1032Aika InouyeArgentina2026-04-27Feltz Printing Service UNQUALIFIED80Xuxue Feng
1033Maisha RulapaughItaly2026-05-11Commercial Press RENEWAL35Xuxue Feng
1034Mujtaba NickaFrance2026-05-22Buckley Miller Wright PROPOSAL68Onyama Limba
1035Murillo MaletUnited Kingdom2026-05-02Dorl, James J Esq QUALIFIED22Stephen Shaw
1036David DarakjyIndia2026-05-22Dorl, James J Esq PROPOSAL31Xuxue Feng
1037Morrow RutaArgentina2026-05-24Rousseaux, Michael Esq PROPOSAL2Onyama Limba
1038Misaki RoysterJapan2026-05-17Rangoni Of Florence NEW78Bernardo Dominic
1039Ricardo GauchoSpain2026-05-25Chemel, James L Cpa NEW62Onyama Limba
1040Emily WhobreyArgentina2026-05-09Feltz Printing Service QUALIFIED55Elwin Sharvill
1041Octavia MaletArgentina2026-04-28Rousseaux, Michael Esq RENEWAL77Xuxue Feng
1042Jeanfrancois VenereIndia2026-05-04Morlong Associates PROPOSAL36Amy Elsner
1043Alejandro PerinJapan2026-05-23Rousseaux, Michael Esq RENEWAL36Asiya Javayant
1044Aruna FigeroaJapan2026-05-15Benton, John B Jr RENEWAL76Elwin Sharvill
1045Ricardo GauchoUnited Kingdom2026-05-21Feiner Bros UNQUALIFIED78Ivan Magalhaes
1046Morrow RutaGermany2026-05-04Commercial Press UNQUALIFIED1Xuxue Feng
1047Ricardo GauchoUnited Kingdom2026-05-20Benton, John B Jr UNQUALIFIED83Anna Fali
1048Aruna FigeroaFrance2026-05-23Commercial Press NEGOTIATION36Bernardo Dominic
1049Kadeem FlosiRussia2026-05-23Morlong Associates QUALIFIED57Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Leon OldroydFranceAmy Elsner QUALIFIED
Nicolas IturbideBrazilStephen Shaw NEGOTIATION
Antonio CaudyAustraliaAsiya Javayant RENEWAL
Emily WhobreyCanadaIoni Bowcher UNQUALIFIED
Arvin AlbaresUnited KingdomAnna Fali UNQUALIFIED
Emily WhobreyAustraliaAsiya Javayant UNQUALIFIED
Ivar PaprockiJapanAnna Fali QUALIFIED
Darci PoquetteSpainStephen Shaw NEGOTIATION
Maria MarrierSpainOnyama Limba PROPOSAL
Smith GlickSpainXuxue Feng QUALIFIED
Aika InouyeArgentinaElwin Sharvill QUALIFIED
Greenwood BologniaUnited KingdomAsiya Javayant PROPOSAL
Ivar PaprockiItalyElwin Sharvill NEGOTIATION
Emily WhobreyRussiaAnna Fali NEW
Tony FollerGermanyAmy Elsner QUALIFIED
Aika InouyeSpainOnyama Limba QUALIFIED
Johnson SergiIndiaIvan Magalhaes RENEWAL
Aruna FigeroaSpainBernardo Dominic PROPOSAL
Izzy GarufiIndiaAmy Elsner NEW
Faith GillianArgentinaBernardo Dominic QUALIFIED
Wickens NestleRussiaStephen Shaw NEGOTIATION
Aruna FigeroaUnited KingdomOnyama Limba PROPOSAL
Rodrigues CampainIndiaAmy Elsner PROPOSAL
Isabel BowleyRussiaXuxue Feng NEGOTIATION
Francesco ShinkoIndiaStephen Shaw QUALIFIED
Greenwood BologniaBrazilXuxue Feng RENEWAL
Maria MarrierUnited KingdomStephen Shaw NEW
David DarakjyItalyElwin Sharvill RENEWAL
Alejandro PerinItalyAmy Elsner QUALIFIED
Clifford RimSpainAmy Elsner PROPOSAL
Kadeem FlosiJapanAmy Elsner QUALIFIED
Aruna FigeroaJapanIoni Bowcher RENEWAL
Octavia MaletItalyIoni Bowcher NEGOTIATION
Cody SaylorsIndiaOnyama Limba NEGOTIATION
Misaki RoysterAustraliaElwin Sharvill RENEWAL
Salvatore StockhamGermanyIoni Bowcher QUALIFIED
Maria MarrierSpainBernardo Dominic QUALIFIED
Antonio CaudyArgentinaIvan Magalhaes NEW
David DarakjyUnited KingdomStephen Shaw NEW
Arvin AlbaresUnited KingdomBernardo Dominic UNQUALIFIED
Munro FerenczIndiaXuxue Feng RENEWAL
Aruna FigeroaRussiaElwin Sharvill NEGOTIATION
Izzy GarufiUnited KingdomAnna Fali NEGOTIATION
Misaki RoysterArgentinaAmy Elsner NEW
Mujtaba NickaIndiaAnna Fali UNQUALIFIED
Julie StensethItalyIoni Bowcher RENEWAL
Tony FollerAustraliaAnna Fali RENEWAL
James ButtJapanAmy Elsner UNQUALIFIED
Julie StensethFranceXuxue Feng NEGOTIATION
David DarakjyBrazilIoni Bowcher RENEWAL
Frozen Columns
Name
Jennifer Amigon
Costa Dilliard
Costa Dilliard
Leon Oldroyd
Munro Ferencz
Johnson Sergi
Costa Dilliard
Stacey Maclead
Silvio Slusarski
Arvin Albares
Maria Marrier
Costa Dilliard
Salvatore Stockham
Rodrigues Campain
Octavia Malet
Kaitlin Ostrosky
Darci Poquette
Munro Ferencz
Munro Ferencz
Sinclair Waycott
Antonio Caudy
Rodrigues Campain
Ricardo Gaucho
Sinclair Waycott
Silvio Slusarski
Francesco Shinko
David Darakjy
Mayumi Kolmetz
Julie Stenseth
Costa Dilliard
Nicolas Iturbide
David Darakjy
Stacey Maclead
Arvin Albares
Jennifer Amigon
Arvin Albares
Izzy Garufi
Faith Gillian
Octavia Malet
Jennifer Amigon
Francesco Shinko
Maria Marrier
Adams Morasca
Deepesh Chui
Nicolas Iturbide
Faith Gillian
Ricardo Gaucho
Octavia Malet
Misaki Royster
Darci Poquette
IdCountryDate
1000Italy2026-05-01
1001Russia2026-04-27
1002Canada2026-05-04
1003India2026-05-13
1004Brazil2026-05-17
1005Canada2026-05-12
1006United Kingdom2026-05-13
1007Spain2026-05-10
1008United Kingdom2026-05-12
1009Brazil2026-05-07
1010Germany2026-05-16
1011Germany2026-04-29
1012Russia2026-05-09
1013Japan2026-05-07
1014Germany2026-04-29
1015Germany2026-04-28
1016France2026-04-27
1017India2026-04-30
1018Spain2026-05-01
1019Australia2026-05-01
1020Canada2026-05-14
1021Australia2026-05-13
1022United Kingdom2026-05-14
1023Canada2026-05-16
1024United Kingdom2026-05-10
1025Argentina2026-05-06
1026France2026-05-22
1027Russia2026-05-03
1028Canada2026-05-09
1029Italy2026-05-15
1030France2026-05-16
1031India2026-05-20
1032Russia2026-05-01
1033Canada2026-04-30
1034Spain2026-05-18
1035Spain2026-04-30
1036Germany2026-05-13
1037Russia2026-05-11
1038Argentina2026-04-29
1039Australia2026-05-11
1040Spain2026-05-11
1041France2026-05-12
1042France2026-05-06
1043Canada2026-05-25
1044Russia2026-05-25
1045United Kingdom2026-05-05
1046Italy2026-04-28
1047Japan2026-04-30
1048Brazil2026-05-07
1049Russia2026-05-21

On-Demand Data

NameIdCountryDate
Nicolas Iturbide1000Italy2026-05-13
Aika Inouye1001Germany2026-04-27
Ricardo Gaucho1002Japan2026-05-21
Octavia Malet1003Brazil2026-05-24
Julie Stenseth1004Argentina2026-05-20
Juan Wieser1005Russia2026-05-01
Leja Caldarera1006Brazil2026-05-17
Aruna Figeroa1007France2026-05-01
Silvio Slusarski1008France2026-05-23
Kaitlin Ostrosky1009Australia2026-04-29
Wickens Nestle1010Germany2026-05-08
Murillo Malet1011Australia2026-05-15
Rodrigues Campain1012Russia2026-05-17
Salvatore Stockham1013United Kingdom2026-05-05
Nicolas Iturbide1014Russia2026-04-30
Izzy Garufi1015Argentina2026-05-22
Nicolas Iturbide1016France2026-05-21
Leja Caldarera1017Japan2026-04-30
Ricardo Gaucho1018Argentina2026-05-11
Jones Vocelka1019Argentina2026-05-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia MaletUnited KingdomAsiya Javayant NEW
Emily WhobreyArgentinaElwin Sharvill NEGOTIATION
Jefferson SchemmerJapanAnna Fali PROPOSAL
Johnson SergiIndiaIvan Magalhaes NEGOTIATION
Maria MarrierJapanStephen Shaw UNQUALIFIED
Maisha RulapaughRussiaAsiya Javayant RENEWAL
Costa DilliardIndiaIoni Bowcher NEGOTIATION
Leon OldroydRussiaAsiya Javayant RENEWAL
Chavez BriddickArgentinaStephen Shaw NEW
Munro FerenczIndiaAsiya Javayant QUALIFIED
Smith GlickCanadaIoni Bowcher RENEWAL
Alejandro PerinGermanyIvan Magalhaes RENEWAL
Ivar PaprockiItalyOnyama Limba RENEWAL
David DarakjyBrazilElwin Sharvill RENEWAL
Kaitlin OstroskyArgentinaBernardo Dominic PROPOSAL
Ashley DoeSpainElwin Sharvill UNQUALIFIED
Sinclair WaycottIndiaXuxue Feng RENEWAL
Claire TollnerCanadaBernardo Dominic NEGOTIATION
Deepesh ChuiRussiaIoni Bowcher UNQUALIFIED
Mujtaba NickaJapanElwin Sharvill NEW
Munro FerenczUnited KingdomAnna Fali PROPOSAL
Cody SaylorsArgentinaIoni Bowcher NEW
Julie StensethUnited KingdomStephen Shaw RENEWAL
Kaitlin OstroskyCanadaOnyama Limba NEGOTIATION
Kaitlin OstroskyRussiaAnna Fali NEW
Faith GillianIndiaIvan Magalhaes UNQUALIFIED
Arvin AlbaresAustraliaIvan Magalhaes RENEWAL
Misaki RoysterRussiaIoni Bowcher UNQUALIFIED
Deepesh ChuiSpainIvan Magalhaes RENEWAL
Cody SaylorsRussiaIvan Magalhaes RENEWAL
Isabel BowleyJapanAnna Fali PROPOSAL
Smith GlickCanadaAmy Elsner NEGOTIATION
Darci PoquetteUnited KingdomStephen Shaw NEGOTIATION
Darci PoquetteFranceAnna Fali QUALIFIED
Cody SaylorsCanadaAsiya Javayant QUALIFIED
Deepesh ChuiBrazilAnna Fali QUALIFIED
Cody SaylorsArgentinaIvan Magalhaes PROPOSAL
James ButtAustraliaOnyama Limba UNQUALIFIED
Greenwood BologniaJapanElwin Sharvill UNQUALIFIED
Costa DilliardCanadaOnyama Limba 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>