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
Emily WhobreyUnited KingdomIvan Magalhaes NEGOTIATION
Morrow RutaJapanIvan Magalhaes RENEWAL
Emily WhobreyRussiaAmy Elsner QUALIFIED
Smith GlickCanadaIoni Bowcher QUALIFIED
Sinclair WaycottBrazilBernardo Dominic PROPOSAL
Johnson SergiAustraliaIvan Magalhaes QUALIFIED
Misaki RoysterItalyIvan Magalhaes QUALIFIED
Stacey MacleadGermanyXuxue Feng NEGOTIATION
Antonio CaudyBrazilElwin Sharvill RENEWAL
Emily WhobreyBrazilIvan Magalhaes UNQUALIFIED
Rodrigues CampainArgentinaBernardo Dominic RENEWAL
Kaitlin OstroskyJapanElwin Sharvill UNQUALIFIED
Claire TollnerFranceIoni Bowcher NEW
Wickens NestleCanadaAsiya Javayant UNQUALIFIED
Antonio CaudyFranceAnna Fali NEGOTIATION
Wickens NestleCanadaStephen Shaw UNQUALIFIED
Deepesh ChuiGermanyAnna Fali QUALIFIED
Octavia MaletAustraliaIoni Bowcher QUALIFIED
Izzy GarufiCanadaIvan Magalhaes NEGOTIATION
Aika InouyeArgentinaAmy Elsner PROPOSAL
Munro FerenczCanadaElwin Sharvill NEGOTIATION
Greenwood BologniaArgentinaIvan Magalhaes NEGOTIATION
Alejandro PerinIndiaBernardo Dominic NEGOTIATION
Jefferson SchemmerJapanBernardo Dominic NEW
Izzy GarufiIndiaIvan Magalhaes UNQUALIFIED
Murillo MaletJapanBernardo Dominic RENEWAL
Mujtaba NickaGermanyAnna Fali NEGOTIATION
Rodrigues CampainBrazilAmy Elsner PROPOSAL
Aika InouyeItalyStephen Shaw RENEWAL
Julie StensethArgentinaStephen Shaw PROPOSAL
Misaki RoysterSpainIoni Bowcher QUALIFIED
Francesco ShinkoRussiaIvan Magalhaes NEW
Kadeem FlosiAustraliaAnna Fali UNQUALIFIED
Isabel BowleyGermanyIoni Bowcher QUALIFIED
Arvin AlbaresJapanAmy Elsner UNQUALIFIED
Emily WhobreyBrazilBernardo Dominic NEGOTIATION
Rodrigues CampainUnited KingdomIoni Bowcher QUALIFIED
James ButtArgentinaBernardo Dominic RENEWAL
Misaki RoysterArgentinaOnyama Limba NEW
Maisha RulapaughGermanyIoni Bowcher QUALIFIED
Rodrigues CampainGermanyBernardo Dominic RENEWAL
Faith GillianItalyIvan Magalhaes RENEWAL
Deepesh ChuiAustraliaIvan Magalhaes QUALIFIED
James ButtArgentinaAsiya Javayant QUALIFIED
Aruna FigeroaJapanOnyama Limba NEW
Leon OldroydBrazilAnna Fali NEGOTIATION
Adams MorascaBrazilIvan Magalhaes QUALIFIED
Arvin AlbaresAustraliaOnyama Limba NEGOTIATION
Jefferson SchemmerAustraliaIoni Bowcher NEGOTIATION
Mayumi KolmetzIndiaAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Tony FollerItalyStephen Shaw NEW
Aika InouyeGermanyElwin Sharvill UNQUALIFIED
Mayumi KolmetzUnited KingdomAmy Elsner NEGOTIATION
Kadeem FlosiSpainAmy Elsner QUALIFIED
Misaki RoysterBrazilAmy Elsner NEW
Silvio SlusarskiIndiaIvan Magalhaes UNQUALIFIED
Clifford RimJapanElwin Sharvill RENEWAL
Mayumi KolmetzAustraliaXuxue Feng NEGOTIATION
Jeanfrancois VenereJapanAsiya Javayant NEW
Mujtaba NickaIndiaAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson SergiIndia2026-05-24Rousseaux, Michael Esq QUALIFIED97Xuxue Feng
1001Mayumi KolmetzCanada2026-05-01Buckley Miller Wright PROPOSAL25Ivan Magalhaes
1002Jefferson SchemmerSpain2026-04-30Dorl, James J Esq NEW37Onyama Limba
1003Leon OldroydIndia2026-05-24Morlong Associates NEW37Amy Elsner
1004Kaitlin OstroskyIndia2026-05-15King, Christopher A Esq RENEWAL78Amy Elsner
1005Clifford RimArgentina2026-05-10Feltz Printing Service NEW33Elwin Sharvill
1006Octavia MaletRussia2026-05-07Benton, John B Jr QUALIFIED34Asiya Javayant
1007Arvin AlbaresCanada2026-05-26Feiner Bros NEW55Asiya Javayant
1008Smith GlickSpain2026-05-18Commercial Press QUALIFIED53Elwin Sharvill
1009David DarakjyJapan2026-04-28Truhlar And Truhlar Attys UNQUALIFIED44Elwin Sharvill
1010Nicolas IturbideJapan2026-04-30Benton, John B Jr NEW91Bernardo Dominic
1011Ashley DoeFrance2026-05-05Buckley Miller Wright PROPOSAL92Asiya Javayant
1012Misaki RoysterGermany2026-05-05Morlong Associates NEW44Amy Elsner
1013Francesco ShinkoRussia2026-05-10Chemel, James L Cpa NEGOTIATION10Amy Elsner
1014Wickens NestleBrazil2026-05-23King, Christopher A Esq PROPOSAL89Amy Elsner
1015Maria MarrierRussia2026-04-28King, Christopher A Esq NEGOTIATION80Asiya Javayant
1016Aditya KuskoItaly2026-05-16Feltz Printing Service PROPOSAL48Elwin Sharvill
1017Aditya KuskoUnited Kingdom2026-05-23Commercial Press UNQUALIFIED26Elwin Sharvill
1018Julie StensethJapan2026-05-13Feltz Printing Service PROPOSAL0Amy Elsner
1019Jones VocelkaSpain2026-05-27Feiner Bros NEW54Amy Elsner
1020Smith GlickAustralia2026-05-19Chemel, James L Cpa NEW91Bernardo Dominic
1021Murillo MaletItaly2026-05-02Chanay, Jeffrey A Esq UNQUALIFIED50Bernardo Dominic
1022Arvin AlbaresSpain2026-05-01Commercial Press RENEWAL21Onyama Limba
1023Leon OldroydItaly2026-05-21Chemel, James L Cpa PROPOSAL91Anna Fali
1024Jefferson SchemmerCanada2026-05-19Feiner Bros QUALIFIED11Elwin Sharvill
1025Aruna FigeroaCanada2026-04-30Commercial Press RENEWAL90Ioni Bowcher
1026Sinclair WaycottSpain2026-05-18Rangoni Of Florence UNQUALIFIED49Ivan Magalhaes
1027Ricardo GauchoAustralia2026-05-12Benton, John B Jr NEW27Onyama Limba
1028Kaitlin OstroskyBrazil2026-05-01Morlong Associates PROPOSAL24Elwin Sharvill
1029Murillo MaletBrazil2026-05-18Chemel, James L Cpa PROPOSAL27Stephen Shaw
1030Jones VocelkaItaly2026-05-04Benton, John B Jr RENEWAL8Onyama Limba
1031Rodrigues CampainSpain2026-05-05King, Christopher A Esq NEW96Bernardo Dominic
1032Aditya KuskoItaly2026-05-19Chanay, Jeffrey A Esq RENEWAL60Xuxue Feng
1033Ashley DoeUnited Kingdom2026-05-15Printing Dimensions NEGOTIATION54Asiya Javayant
1034Kaitlin OstroskyAustralia2026-05-21Rangoni Of Florence NEW82Ioni Bowcher
1035Costa DilliardSpain2026-05-05Rangoni Of Florence RENEWAL48Amy Elsner
1036Juan WieserGermany2026-05-14Chemel, James L Cpa PROPOSAL81Xuxue Feng
1037Arvin AlbaresItaly2026-05-05King, Christopher A Esq NEW7Amy Elsner
1038Silvio SlusarskiJapan2026-05-11Chapman, Ross E Esq NEW37Asiya Javayant
1039Johnson SergiAustralia2026-05-12Rousseaux, Michael Esq NEW81Elwin Sharvill
1040Maria MarrierAustralia2026-04-30Buckley Miller Wright PROPOSAL47Xuxue Feng
1041Ivar PaprockiItaly2026-05-04Rousseaux, Michael Esq NEGOTIATION88Ivan Magalhaes
1042Francesco ShinkoUnited Kingdom2026-05-02Chanay, Jeffrey A Esq RENEWAL35Asiya Javayant
1043Emily WhobreyCanada2026-05-04King, Christopher A Esq QUALIFIED90Xuxue Feng
1044Misaki RoysterAustralia2026-05-18Chapman, Ross E Esq QUALIFIED43Asiya Javayant
1045Izzy GarufiIndia2026-05-18Feltz Printing Service UNQUALIFIED40Anna Fali
1046Claire TollnerAustralia2026-05-14Morlong Associates NEW85Anna Fali
1047Aditya KuskoArgentina2026-05-03Printing Dimensions UNQUALIFIED49Ivan Magalhaes
1048Nicolas IturbideIndia2026-05-02Chapman, Ross E Esq QUALIFIED0Onyama Limba
1049Clifford RimSpain2026-05-20Feltz Printing Service RENEWAL55Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Deepesh ChuiJapanIoni Bowcher NEW
Adams MorascaAustraliaOnyama Limba NEGOTIATION
Jeanfrancois VenereJapanStephen Shaw NEGOTIATION
Morrow RutaUnited KingdomAnna Fali NEW
Faith GillianSpainAnna Fali UNQUALIFIED
Morrow RutaGermanyStephen Shaw QUALIFIED
Jefferson SchemmerCanadaAnna Fali NEGOTIATION
Faith GillianSpainElwin Sharvill QUALIFIED
Munro FerenczArgentinaBernardo Dominic NEW
Maisha RulapaughBrazilAmy Elsner QUALIFIED
Leja CaldareraFranceAnna Fali UNQUALIFIED
Wickens NestleCanadaIvan Magalhaes UNQUALIFIED
Aika InouyeUnited KingdomAmy Elsner UNQUALIFIED
Clifford RimArgentinaIvan Magalhaes NEGOTIATION
Leon OldroydSpainAsiya Javayant UNQUALIFIED
Kaitlin OstroskyItalyOnyama Limba NEGOTIATION
Leon OldroydGermanyAsiya Javayant NEGOTIATION
Chavez BriddickUnited KingdomXuxue Feng NEGOTIATION
Rodrigues CampainItalyIvan Magalhaes NEGOTIATION
Chavez BriddickIndiaAsiya Javayant QUALIFIED
Izzy GarufiFranceElwin Sharvill NEGOTIATION
Nicolas IturbideRussiaStephen Shaw NEW
Costa DilliardCanadaIvan Magalhaes UNQUALIFIED
Ivar PaprockiGermanyIoni Bowcher RENEWAL
Smith GlickIndiaAsiya Javayant UNQUALIFIED
Ashley DoeAustraliaElwin Sharvill NEW
Kaitlin OstroskyIndiaAsiya Javayant RENEWAL
Deepesh ChuiBrazilStephen Shaw NEW
Sinclair WaycottGermanyOnyama Limba RENEWAL
Maria MarrierRussiaElwin Sharvill QUALIFIED
Morrow RutaBrazilAnna Fali QUALIFIED
Jennifer AmigonBrazilAnna Fali UNQUALIFIED
Misaki RoysterCanadaElwin Sharvill UNQUALIFIED
Cody SaylorsAustraliaAnna Fali NEGOTIATION
Clifford RimSpainAmy Elsner NEW
Nicolas IturbideUnited KingdomIvan Magalhaes QUALIFIED
Kaitlin OstroskySpainStephen Shaw PROPOSAL
Munro FerenczArgentinaStephen Shaw PROPOSAL
Misaki RoysterSpainBernardo Dominic QUALIFIED
Murillo MaletJapanAmy Elsner NEW
Sinclair WaycottBrazilIoni Bowcher NEGOTIATION
Ivar PaprockiAustraliaBernardo Dominic UNQUALIFIED
Jennifer AmigonBrazilStephen Shaw NEW
Claire TollnerRussiaOnyama Limba RENEWAL
Smith GlickItalyAsiya Javayant QUALIFIED
Antonio CaudyUnited KingdomStephen Shaw NEGOTIATION
Smith GlickJapanOnyama Limba QUALIFIED
Kaitlin OstroskyUnited KingdomIoni Bowcher UNQUALIFIED
Mujtaba NickaIndiaAmy Elsner QUALIFIED
Octavia MaletAustraliaIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Jones Vocelka
Leja Caldarera
Julie Stenseth
Kadeem Flosi
Johnson Sergi
Jeanfrancois Venere
Silvio Slusarski
Murillo Malet
Stacey Maclead
Darci Poquette
Chavez Briddick
Antonio Caudy
Wickens Nestle
Leja Caldarera
Tony Foller
Kaitlin Ostrosky
Maisha Rulapaugh
Maria Marrier
Ashley Doe
Claire Tollner
Adams Morasca
Darci Poquette
Munro Ferencz
Mayumi Kolmetz
Ivar Paprocki
Rodrigues Campain
Aika Inouye
Costa Dilliard
Julie Stenseth
Nicolas Iturbide
Johnson Sergi
Isabel Bowley
Francesco Shinko
Jeanfrancois Venere
Costa Dilliard
Emily Whobrey
Tony Foller
Johnson Sergi
Jones Vocelka
Jones Vocelka
Kaitlin Ostrosky
David Darakjy
Jones Vocelka
Claire Tollner
Costa Dilliard
Claire Tollner
Nicolas Iturbide
Johnson Sergi
Tony Foller
Misaki Royster
IdCountryDate
1000Argentina2026-05-08
1001India2026-05-17
1002Russia2026-05-18
1003United Kingdom2026-05-09
1004India2026-04-30
1005United Kingdom2026-05-27
1006United Kingdom2026-04-30
1007Argentina2026-05-20
1008Brazil2026-05-19
1009Canada2026-05-24
1010Brazil2026-05-14
1011Canada2026-05-17
1012Italy2026-05-18
1013Australia2026-05-21
1014Germany2026-05-18
1015France2026-05-26
1016Canada2026-05-16
1017Spain2026-05-25
1018Spain2026-05-09
1019Argentina2026-05-05
1020Australia2026-05-06
1021Germany2026-05-02
1022India2026-05-19
1023Canada2026-05-21
1024Italy2026-05-16
1025Russia2026-05-08
1026Canada2026-05-06
1027Australia2026-05-08
1028Spain2026-05-15
1029Russia2026-05-10
1030Italy2026-05-22
1031Spain2026-05-08
1032Canada2026-05-14
1033France2026-05-04
1034Canada2026-05-05
1035Russia2026-05-22
1036Japan2026-05-04
1037Spain2026-05-22
1038Spain2026-05-18
1039France2026-05-22
1040Germany2026-05-12
1041Germany2026-05-17
1042Italy2026-05-18
1043Brazil2026-05-15
1044Australia2026-05-05
1045Japan2026-05-24
1046Spain2026-05-04
1047Japan2026-05-23
1048India2026-05-25
1049United Kingdom2026-05-03

On-Demand Data

NameIdCountryDate
Aika Inouye1000India2026-05-06
James Butt1001India2026-04-29
Mayumi Kolmetz1002Italy2026-05-11
Isabel Bowley1003India2026-05-18
Leja Caldarera1004United Kingdom2026-05-02
Jefferson Schemmer1005Argentina2026-05-26
Smith Glick1006Brazil2026-05-06
Misaki Royster1007Spain2026-05-11
Ashley Doe1008Russia2026-05-09
Cody Saylors1009Spain2026-05-07
David Darakjy1010Brazil2026-05-25
Jeanfrancois Venere1011Canada2026-05-15
James Butt1012United Kingdom2026-05-19
Munro Ferencz1013Canada2026-05-12
Smith Glick1014Germany2026-05-05
Jones Vocelka1015Italy2026-05-20
Emily Whobrey1016United Kingdom2026-05-18
Ricardo Gaucho1017Brazil2026-05-02
David Darakjy1018Italy2026-05-03
Isabel Bowley1019Brazil2026-05-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna FigeroaUnited KingdomBernardo Dominic PROPOSAL
Mayumi KolmetzRussiaIoni Bowcher PROPOSAL
David DarakjyJapanXuxue Feng NEGOTIATION
Arvin AlbaresBrazilIvan Magalhaes NEW
Costa DilliardUnited KingdomBernardo Dominic PROPOSAL
Francesco ShinkoSpainAmy Elsner QUALIFIED
Morrow RutaAustraliaAsiya Javayant PROPOSAL
Arvin AlbaresIndiaStephen Shaw RENEWAL
Silvio SlusarskiAustraliaAsiya Javayant PROPOSAL
Aruna FigeroaBrazilXuxue Feng NEW
Jones VocelkaRussiaBernardo Dominic NEGOTIATION
Silvio SlusarskiUnited KingdomAsiya Javayant RENEWAL
Darci PoquetteBrazilAnna Fali RENEWAL
Kadeem FlosiBrazilIvan Magalhaes UNQUALIFIED
Stacey MacleadIndiaElwin Sharvill QUALIFIED
Aruna FigeroaSpainAmy Elsner RENEWAL
Izzy GarufiBrazilIvan Magalhaes NEW
Aditya KuskoAustraliaAsiya Javayant PROPOSAL
Juan WieserIndiaStephen Shaw RENEWAL
James ButtFranceOnyama Limba RENEWAL
Adams MorascaCanadaStephen Shaw PROPOSAL
Tony FollerSpainAsiya Javayant QUALIFIED
Deepesh ChuiIndiaAsiya Javayant NEGOTIATION
Clifford RimSpainOnyama Limba NEW
Emily WhobreyBrazilIoni Bowcher QUALIFIED
Antonio CaudyIndiaBernardo Dominic UNQUALIFIED
Cody SaylorsBrazilBernardo Dominic RENEWAL
Salvatore StockhamAustraliaIoni Bowcher PROPOSAL
Alejandro PerinCanadaBernardo Dominic PROPOSAL
Jennifer AmigonIndiaOnyama Limba UNQUALIFIED
Nicolas IturbideCanadaOnyama Limba UNQUALIFIED
Sinclair WaycottGermanyStephen Shaw RENEWAL
Mayumi KolmetzItalyOnyama Limba NEW
Alejandro PerinBrazilAmy Elsner NEGOTIATION
Murillo MaletArgentinaAmy Elsner UNQUALIFIED
Sinclair WaycottGermanyXuxue Feng UNQUALIFIED
Aika InouyeFranceOnyama Limba PROPOSAL
Ivar PaprockiArgentinaAsiya Javayant NEW
Emily WhobreyJapanAsiya Javayant RENEWAL
Jones VocelkaBrazilXuxue Feng 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>