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
Isabel BowleyCanadaAnna Fali UNQUALIFIED
Aruna FigeroaJapanBernardo Dominic UNQUALIFIED
Adams MorascaItalyAnna Fali NEGOTIATION
Smith GlickRussiaStephen Shaw RENEWAL
Costa DilliardItalyIoni Bowcher RENEWAL
Isabel BowleyBrazilOnyama Limba RENEWAL
Tony FollerAustraliaBernardo Dominic RENEWAL
Jones VocelkaArgentinaStephen Shaw QUALIFIED
Kaitlin OstroskyIndiaBernardo Dominic NEW
Arvin AlbaresGermanyXuxue Feng RENEWAL
Ivar PaprockiFranceOnyama Limba NEGOTIATION
Ivar PaprockiArgentinaAsiya Javayant PROPOSAL
Jefferson SchemmerArgentinaStephen Shaw PROPOSAL
Rodrigues CampainJapanAsiya Javayant UNQUALIFIED
Ashley DoeSpainElwin Sharvill RENEWAL
Faith GillianFranceIoni Bowcher QUALIFIED
Sinclair WaycottBrazilIvan Magalhaes PROPOSAL
Wickens NestleIndiaXuxue Feng RENEWAL
Claire TollnerCanadaIvan Magalhaes UNQUALIFIED
Ashley DoeJapanElwin Sharvill PROPOSAL
Clifford RimCanadaIvan Magalhaes NEGOTIATION
Maria MarrierGermanyAnna Fali RENEWAL
Faith GillianRussiaIvan Magalhaes UNQUALIFIED
Sinclair WaycottBrazilXuxue Feng UNQUALIFIED
Ivar PaprockiUnited KingdomAsiya Javayant RENEWAL
Kaitlin OstroskyCanadaAnna Fali RENEWAL
Mayumi KolmetzBrazilAnna Fali UNQUALIFIED
James ButtCanadaAsiya Javayant UNQUALIFIED
Smith GlickBrazilAnna Fali NEW
Deepesh ChuiRussiaBernardo Dominic RENEWAL
Juan WieserAustraliaOnyama Limba NEW
Jones VocelkaIndiaIoni Bowcher PROPOSAL
Claire TollnerBrazilIvan Magalhaes RENEWAL
Claire TollnerJapanIvan Magalhaes PROPOSAL
Antonio CaudyArgentinaIvan Magalhaes RENEWAL
Jones VocelkaGermanyStephen Shaw PROPOSAL
David DarakjyAustraliaIoni Bowcher PROPOSAL
Izzy GarufiAustraliaStephen Shaw NEGOTIATION
Isabel BowleyBrazilIoni Bowcher PROPOSAL
Julie StensethJapanElwin Sharvill QUALIFIED
Aditya KuskoAustraliaElwin Sharvill NEGOTIATION
Leon OldroydBrazilOnyama Limba PROPOSAL
Jones VocelkaItalyBernardo Dominic NEGOTIATION
Arvin AlbaresSpainBernardo Dominic RENEWAL
Aruna FigeroaGermanyAmy Elsner RENEWAL
Murillo MaletArgentinaIvan Magalhaes PROPOSAL
Kadeem FlosiItalyAmy Elsner RENEWAL
Misaki RoysterFranceStephen Shaw QUALIFIED
Octavia MaletFranceOnyama Limba RENEWAL
Salvatore StockhamFranceAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Ivar PaprockiSpainAmy Elsner PROPOSAL
Arvin AlbaresIndiaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyItalyStephen Shaw NEW
Tony FollerIndiaIvan Magalhaes QUALIFIED
Mayumi KolmetzItalyElwin Sharvill QUALIFIED
Morrow RutaCanadaBernardo Dominic NEGOTIATION
Mujtaba NickaRussiaOnyama Limba UNQUALIFIED
Aditya KuskoSpainBernardo Dominic UNQUALIFIED
Greenwood BologniaJapanIvan Magalhaes NEW
Isabel BowleyFranceAnna Fali RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony FollerJapan2026-06-14Rousseaux, Michael Esq PROPOSAL20Anna Fali
1001Rodrigues CampainSpain2026-05-28Chanay, Jeffrey A Esq RENEWAL46Asiya Javayant
1002James ButtCanada2026-06-07Chapman, Ross E Esq QUALIFIED78Onyama Limba
1003Sinclair WaycottRussia2026-06-16Chanay, Jeffrey A Esq PROPOSAL41Stephen Shaw
1004Mayumi KolmetzUnited Kingdom2026-06-09Dorl, James J Esq NEGOTIATION81Anna Fali
1005Maria MarrierCanada2026-05-26Rousseaux, Michael Esq NEGOTIATION57Amy Elsner
1006Jefferson SchemmerArgentina2026-05-27Chanay, Jeffrey A Esq NEGOTIATION35Xuxue Feng
1007Ashley DoeFrance2026-06-01Printing Dimensions RENEWAL32Bernardo Dominic
1008Munro FerenczCanada2026-06-03Printing Dimensions NEGOTIATION36Anna Fali
1009Kaitlin OstroskyIndia2026-06-18Chapman, Ross E Esq QUALIFIED65Anna Fali
1010Adams MorascaSpain2026-06-14Feiner Bros UNQUALIFIED64Asiya Javayant
1011Claire TollnerFrance2026-05-27Rangoni Of Florence NEW8Asiya Javayant
1012James ButtAustralia2026-05-29Commercial Press QUALIFIED18Ivan Magalhaes
1013Smith GlickBrazil2026-06-14Printing Dimensions NEGOTIATION77Stephen Shaw
1014Leon OldroydBrazil2026-06-05Buckley Miller Wright NEW12Stephen Shaw
1015Jefferson SchemmerUnited Kingdom2026-05-27Chanay, Jeffrey A Esq NEW28Anna Fali
1016Octavia MaletBrazil2026-06-01Feiner Bros PROPOSAL32Amy Elsner
1017Jones VocelkaCanada2026-06-19Dorl, James J Esq NEW0Asiya Javayant
1018Arvin AlbaresCanada2026-06-13King, Christopher A Esq QUALIFIED97Amy Elsner
1019Octavia MaletUnited Kingdom2026-05-29Feltz Printing Service UNQUALIFIED17Amy Elsner
1020Leja CaldareraJapan2026-06-19Buckley Miller Wright PROPOSAL69Anna Fali
1021Greenwood BologniaRussia2026-05-26Rangoni Of Florence NEW98Onyama Limba
1022Jones VocelkaIndia2026-06-14Benton, John B Jr UNQUALIFIED66Bernardo Dominic
1023Salvatore StockhamGermany2026-06-14Chanay, Jeffrey A Esq UNQUALIFIED89Onyama Limba
1024David DarakjyJapan2026-05-23King, Christopher A Esq NEGOTIATION10Amy Elsner
1025Sinclair WaycottArgentina2026-06-01Morlong Associates QUALIFIED51Onyama Limba
1026Emily WhobreyUnited Kingdom2026-06-15Chapman, Ross E Esq PROPOSAL43Ioni Bowcher
1027Aika InouyeAustralia2026-05-31Printing Dimensions PROPOSAL62Ioni Bowcher
1028Isabel BowleyFrance2026-06-20Chapman, Ross E Esq QUALIFIED33Ioni Bowcher
1029Ivar PaprockiUnited Kingdom2026-06-08Rousseaux, Michael Esq RENEWAL30Onyama Limba
1030Murillo MaletCanada2026-05-24King, Christopher A Esq QUALIFIED89Bernardo Dominic
1031Jeanfrancois VenereUnited Kingdom2026-05-24Commercial Press NEGOTIATION65Ivan Magalhaes
1032Jeanfrancois VenereAustralia2026-06-17Chapman, Ross E Esq RENEWAL75Bernardo Dominic
1033Maisha RulapaughCanada2026-05-25Dorl, James J Esq UNQUALIFIED8Stephen Shaw
1034Morrow RutaFrance2026-06-08Chapman, Ross E Esq QUALIFIED56Amy Elsner
1035Isabel BowleySpain2026-05-23Feltz Printing Service QUALIFIED12Amy Elsner
1036Salvatore StockhamFrance2026-05-27Truhlar And Truhlar Attys NEW80Elwin Sharvill
1037Munro FerenczAustralia2026-06-16Chemel, James L Cpa QUALIFIED44Ivan Magalhaes
1038Francesco ShinkoGermany2026-06-02Chanay, Jeffrey A Esq NEGOTIATION86Xuxue Feng
1039Aika InouyeCanada2026-05-30Morlong Associates QUALIFIED97Onyama Limba
1040Maria MarrierItaly2026-06-05Commercial Press NEW74Stephen Shaw
1041Jeanfrancois VenereGermany2026-06-09Rousseaux, Michael Esq QUALIFIED11Asiya Javayant
1042Cody SaylorsFrance2026-06-10Dorl, James J Esq NEW3Xuxue Feng
1043David DarakjyIndia2026-06-20Rousseaux, Michael Esq UNQUALIFIED59Bernardo Dominic
1044Faith GillianJapan2026-06-17Feiner Bros NEGOTIATION94Ivan Magalhaes
1045Juan WieserIndia2026-05-30Chemel, James L Cpa NEGOTIATION46Bernardo Dominic
1046Costa DilliardIndia2026-06-08Chemel, James L Cpa QUALIFIED73Stephen Shaw
1047Aditya KuskoUnited Kingdom2026-06-02Rangoni Of Florence NEGOTIATION32Elwin Sharvill
1048James ButtGermany2026-06-17Rousseaux, Michael Esq QUALIFIED6Amy Elsner
1049Aruna FigeroaFrance2026-06-04Chapman, Ross E Esq NEGOTIATION37Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Izzy GarufiAustraliaAsiya Javayant NEGOTIATION
Costa DilliardUnited KingdomAmy Elsner QUALIFIED
Sinclair WaycottAustraliaBernardo Dominic RENEWAL
Morrow RutaItalyIoni Bowcher QUALIFIED
Antonio CaudyItalyAmy Elsner NEW
Salvatore StockhamArgentinaStephen Shaw NEW
David DarakjyBrazilAnna Fali UNQUALIFIED
Julie StensethCanadaStephen Shaw NEW
Faith GillianSpainIoni Bowcher PROPOSAL
Jennifer AmigonIndiaAnna Fali QUALIFIED
Tony FollerFranceBernardo Dominic RENEWAL
Chavez BriddickAustraliaIoni Bowcher QUALIFIED
Salvatore StockhamGermanyIoni Bowcher NEW
Munro FerenczUnited KingdomXuxue Feng UNQUALIFIED
Juan WieserArgentinaBernardo Dominic UNQUALIFIED
Clifford RimIndiaAmy Elsner UNQUALIFIED
Darci PoquetteJapanBernardo Dominic RENEWAL
Cody SaylorsRussiaBernardo Dominic UNQUALIFIED
Kadeem FlosiIndiaXuxue Feng UNQUALIFIED
Morrow RutaCanadaAsiya Javayant QUALIFIED
Jones VocelkaFranceElwin Sharvill UNQUALIFIED
Cody SaylorsAustraliaElwin Sharvill PROPOSAL
James ButtAustraliaAmy Elsner NEGOTIATION
Jones VocelkaJapanBernardo Dominic NEGOTIATION
Wickens NestleUnited KingdomBernardo Dominic PROPOSAL
Maisha RulapaughRussiaIvan Magalhaes UNQUALIFIED
Deepesh ChuiBrazilAsiya Javayant NEW
Mujtaba NickaSpainStephen Shaw PROPOSAL
Johnson SergiRussiaOnyama Limba QUALIFIED
Jennifer AmigonAustraliaBernardo Dominic NEGOTIATION
Ashley DoeFranceAnna Fali RENEWAL
Aika InouyeArgentinaBernardo Dominic RENEWAL
Costa DilliardIndiaXuxue Feng RENEWAL
Leon OldroydItalyIvan Magalhaes NEGOTIATION
Nicolas IturbideItalyAnna Fali QUALIFIED
Aruna FigeroaArgentinaIvan Magalhaes NEW
Tony FollerBrazilStephen Shaw UNQUALIFIED
Faith GillianJapanAsiya Javayant QUALIFIED
Misaki RoysterFranceIoni Bowcher QUALIFIED
Aika InouyeFranceOnyama Limba NEGOTIATION
Silvio SlusarskiGermanyIoni Bowcher NEW
Ricardo GauchoItalyElwin Sharvill NEGOTIATION
Tony FollerAustraliaAmy Elsner PROPOSAL
Morrow RutaGermanyBernardo Dominic QUALIFIED
Francesco ShinkoGermanyXuxue Feng RENEWAL
Chavez BriddickIndiaBernardo Dominic QUALIFIED
Silvio SlusarskiAustraliaOnyama Limba UNQUALIFIED
Greenwood BologniaAustraliaAmy Elsner NEW
Misaki RoysterJapanXuxue Feng QUALIFIED
Stacey MacleadSpainAmy Elsner NEGOTIATION
Frozen Columns
Name
Mujtaba Nicka
Isabel Bowley
Murillo Malet
Darci Poquette
James Butt
Octavia Malet
Ashley Doe
Morrow Ruta
Costa Dilliard
Misaki Royster
Ivar Paprocki
Jones Vocelka
Deepesh Chui
Ivar Paprocki
Maria Marrier
Francesco Shinko
Faith Gillian
Juan Wieser
Tony Foller
Aditya Kusko
Aika Inouye
Deepesh Chui
Murillo Malet
Morrow Ruta
Munro Ferencz
Darci Poquette
Johnson Sergi
Aruna Figeroa
Misaki Royster
Silvio Slusarski
Misaki Royster
Cody Saylors
Wickens Nestle
Munro Ferencz
Wickens Nestle
Aruna Figeroa
Aruna Figeroa
Johnson Sergi
Leja Caldarera
Leon Oldroyd
Alejandro Perin
Maria Marrier
Salvatore Stockham
James Butt
Silvio Slusarski
Antonio Caudy
Jones Vocelka
Deepesh Chui
Francesco Shinko
Nicolas Iturbide
IdCountryDate
1000Spain2026-06-17
1001Russia2026-06-11
1002Italy2026-05-23
1003Canada2026-06-02
1004India2026-06-21
1005Australia2026-06-20
1006Spain2026-06-10
1007United Kingdom2026-06-01
1008Canada2026-05-30
1009Russia2026-06-21
1010Germany2026-06-16
1011United Kingdom2026-06-17
1012United Kingdom2026-06-13
1013India2026-06-05
1014Brazil2026-05-28
1015Australia2026-05-31
1016Italy2026-06-05
1017Argentina2026-06-10
1018Brazil2026-06-13
1019Japan2026-06-15
1020France2026-06-20
1021United Kingdom2026-06-11
1022Spain2026-06-20
1023Germany2026-06-04
1024United Kingdom2026-06-04
1025Spain2026-06-09
1026Germany2026-06-12
1027Spain2026-06-14
1028Italy2026-06-14
1029France2026-05-26
1030Spain2026-06-02
1031Brazil2026-06-06
1032United Kingdom2026-06-08
1033Brazil2026-06-01
1034Canada2026-06-06
1035Japan2026-06-14
1036United Kingdom2026-06-12
1037Russia2026-06-10
1038United Kingdom2026-06-04
1039Italy2026-06-05
1040Italy2026-06-16
1041India2026-06-15
1042Germany2026-06-14
1043United Kingdom2026-06-09
1044Russia2026-06-09
1045Spain2026-05-23
1046Russia2026-06-16
1047Germany2026-06-11
1048Spain2026-06-12
1049Brazil2026-06-20

On-Demand Data

NameIdCountryDate
Arvin Albares1000Japan2026-06-05
Julie Stenseth1001Japan2026-06-11
Chavez Briddick1002Australia2026-05-29
Izzy Garufi1003Russia2026-06-11
Smith Glick1004Spain2026-06-07
Izzy Garufi1005Germany2026-06-05
Misaki Royster1006India2026-06-06
Adams Morasca1007Italy2026-05-26
Alejandro Perin1008Italy2026-06-11
Leon Oldroyd1009Canada2026-06-17
Darci Poquette1010Spain2026-06-19
Alejandro Perin1011India2026-05-23
James Butt1012United Kingdom2026-06-06
Mayumi Kolmetz1013Canada2026-05-29
Isabel Bowley1014Japan2026-06-12
Arvin Albares1015Italy2026-06-15
Chavez Briddick1016Spain2026-06-12
Mujtaba Nicka1017India2026-06-10
Sinclair Waycott1018Japan2026-05-30
James Butt1019France2026-05-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria MarrierAustraliaXuxue Feng NEGOTIATION
Sinclair WaycottRussiaAnna Fali QUALIFIED
Mujtaba NickaUnited KingdomAsiya Javayant NEW
Jones VocelkaBrazilAsiya Javayant UNQUALIFIED
Kadeem FlosiGermanyAsiya Javayant RENEWAL
Kaitlin OstroskyJapanOnyama Limba NEW
Munro FerenczRussiaStephen Shaw NEW
Faith GillianBrazilStephen Shaw RENEWAL
Salvatore StockhamUnited KingdomAnna Fali NEW
Juan WieserArgentinaAmy Elsner NEGOTIATION
Rodrigues CampainArgentinaIoni Bowcher RENEWAL
Izzy GarufiJapanAsiya Javayant NEW
Francesco ShinkoIndiaIoni Bowcher PROPOSAL
Jeanfrancois VenereGermanyOnyama Limba QUALIFIED
Nicolas IturbideUnited KingdomElwin Sharvill NEGOTIATION
Ricardo GauchoJapanStephen Shaw QUALIFIED
Jeanfrancois VenereFranceBernardo Dominic NEGOTIATION
Kadeem FlosiAustraliaAmy Elsner NEGOTIATION
Ricardo GauchoBrazilOnyama Limba QUALIFIED
Izzy GarufiUnited KingdomIvan Magalhaes RENEWAL
Smith GlickItalyXuxue Feng NEW
Tony FollerSpainIvan Magalhaes QUALIFIED
Ricardo GauchoUnited KingdomAnna Fali RENEWAL
Jeanfrancois VenereRussiaXuxue Feng RENEWAL
Jennifer AmigonUnited KingdomBernardo Dominic NEGOTIATION
David DarakjyAustraliaOnyama Limba NEW
Silvio SlusarskiBrazilAsiya Javayant UNQUALIFIED
Rodrigues CampainBrazilAsiya Javayant RENEWAL
Adams MorascaCanadaBernardo Dominic NEGOTIATION
Octavia MaletJapanXuxue Feng NEW
Wickens NestleIndiaAsiya Javayant NEW
Adams MorascaRussiaElwin Sharvill RENEWAL
Salvatore StockhamItalyOnyama Limba QUALIFIED
Jones VocelkaIndiaBernardo Dominic RENEWAL
Leja CaldareraArgentinaAsiya Javayant NEGOTIATION
Jones VocelkaJapanStephen Shaw QUALIFIED
Leon OldroydItalyAnna Fali QUALIFIED
Ricardo GauchoBrazilElwin Sharvill RENEWAL
Rodrigues CampainUnited KingdomOnyama Limba NEW
Jefferson SchemmerCanadaAmy Elsner 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>