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
Stacey MacleadIndiaAmy Elsner QUALIFIED
Maisha RulapaughIndiaBernardo Dominic NEW
Alejandro PerinJapanAsiya Javayant NEW
Nicolas IturbideUnited KingdomElwin Sharvill QUALIFIED
Nicolas IturbideJapanOnyama Limba NEW
Stacey MacleadArgentinaOnyama Limba NEGOTIATION
Jeanfrancois VenereSpainIoni Bowcher NEW
Jones VocelkaCanadaOnyama Limba NEW
Leon OldroydItalyElwin Sharvill RENEWAL
Sinclair WaycottJapanXuxue Feng NEGOTIATION
Deepesh ChuiArgentinaElwin Sharvill NEW
Ricardo GauchoBrazilBernardo Dominic NEGOTIATION
Ricardo GauchoItalyAsiya Javayant UNQUALIFIED
Leja CaldareraRussiaOnyama Limba UNQUALIFIED
Adams MorascaJapanStephen Shaw RENEWAL
Deepesh ChuiSpainStephen Shaw NEGOTIATION
Izzy GarufiIndiaOnyama Limba PROPOSAL
Greenwood BologniaIndiaElwin Sharvill QUALIFIED
Leon OldroydGermanyIoni Bowcher UNQUALIFIED
Sinclair WaycottItalyOnyama Limba QUALIFIED
Leon OldroydCanadaBernardo Dominic QUALIFIED
Sinclair WaycottUnited KingdomElwin Sharvill NEGOTIATION
Murillo MaletItalyIvan Magalhaes PROPOSAL
Adams MorascaJapanAmy Elsner NEGOTIATION
Johnson SergiRussiaBernardo Dominic NEW
Morrow RutaCanadaXuxue Feng RENEWAL
Nicolas IturbideCanadaBernardo Dominic NEGOTIATION
Claire TollnerUnited KingdomAnna Fali PROPOSAL
Salvatore StockhamUnited KingdomElwin Sharvill NEGOTIATION
Francesco ShinkoGermanyBernardo Dominic UNQUALIFIED
Johnson SergiFranceXuxue Feng NEW
Smith GlickRussiaXuxue Feng NEW
Stacey MacleadSpainXuxue Feng UNQUALIFIED
Juan WieserArgentinaIoni Bowcher NEW
Francesco ShinkoIndiaOnyama Limba RENEWAL
Ashley DoeGermanyStephen Shaw QUALIFIED
Ashley DoeFranceIvan Magalhaes QUALIFIED
Cody SaylorsAustraliaAnna Fali RENEWAL
Julie StensethGermanyXuxue Feng UNQUALIFIED
Johnson SergiSpainIoni Bowcher QUALIFIED
Nicolas IturbideGermanyXuxue Feng RENEWAL
Costa DilliardJapanOnyama Limba RENEWAL
Adams MorascaRussiaAsiya Javayant PROPOSAL
Morrow RutaIndiaAmy Elsner RENEWAL
Aditya KuskoUnited KingdomOnyama Limba NEW
Adams MorascaJapanOnyama Limba PROPOSAL
Ashley DoeFranceStephen Shaw UNQUALIFIED
Nicolas IturbideBrazilElwin Sharvill QUALIFIED
Isabel BowleyJapanIoni Bowcher NEW
Ivar PaprockiSpainAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Mujtaba NickaCanadaOnyama Limba UNQUALIFIED
Juan WieserIndiaElwin Sharvill NEW
Maisha RulapaughAustraliaStephen Shaw NEW
Leon OldroydGermanyAsiya Javayant QUALIFIED
Jefferson SchemmerUnited KingdomStephen Shaw PROPOSAL
Morrow RutaAustraliaAsiya Javayant NEW
Leon OldroydIndiaXuxue Feng QUALIFIED
Munro FerenczRussiaIoni Bowcher QUALIFIED
Claire TollnerArgentinaIoni Bowcher UNQUALIFIED
Salvatore StockhamArgentinaOnyama Limba NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci PoquetteItaly2026-06-08Printing Dimensions NEW81Ivan Magalhaes
1001Mujtaba NickaUnited Kingdom2026-05-26Chanay, Jeffrey A Esq QUALIFIED46Onyama Limba
1002David DarakjyAustralia2026-06-09Morlong Associates UNQUALIFIED29Ioni Bowcher
1003Aditya KuskoUnited Kingdom2026-05-27Feltz Printing Service QUALIFIED34Amy Elsner
1004Costa DilliardSpain2026-06-06Truhlar And Truhlar Attys PROPOSAL96Anna Fali
1005Aditya KuskoSpain2026-06-05Printing Dimensions NEGOTIATION10Xuxue Feng
1006Cody SaylorsJapan2026-05-13Chemel, James L Cpa QUALIFIED0Elwin Sharvill
1007Claire TollnerSpain2026-05-18Dorl, James J Esq UNQUALIFIED25Stephen Shaw
1008Morrow RutaIndia2026-05-13Rangoni Of Florence NEGOTIATION11Xuxue Feng
1009Aika InouyeUnited Kingdom2026-06-10Feiner Bros PROPOSAL80Xuxue Feng
1010Juan WieserRussia2026-06-01Rangoni Of Florence UNQUALIFIED14Xuxue Feng
1011Ivar PaprockiRussia2026-05-27King, Christopher A Esq NEW23Amy Elsner
1012Izzy GarufiRussia2026-05-14Buckley Miller Wright PROPOSAL76Bernardo Dominic
1013Munro FerenczRussia2026-05-27Dorl, James J Esq QUALIFIED87Xuxue Feng
1014Octavia MaletJapan2026-05-24Truhlar And Truhlar Attys RENEWAL20Xuxue Feng
1015Cody SaylorsIndia2026-06-04Buckley Miller Wright RENEWAL4Asiya Javayant
1016Morrow RutaItaly2026-06-08Truhlar And Truhlar Attys UNQUALIFIED93Amy Elsner
1017Leja CaldareraUnited Kingdom2026-05-27Buckley Miller Wright UNQUALIFIED93Anna Fali
1018Cody SaylorsFrance2026-06-01Chanay, Jeffrey A Esq NEGOTIATION67Amy Elsner
1019Nicolas IturbideArgentina2026-05-29Commercial Press RENEWAL54Ioni Bowcher
1020Nicolas IturbideJapan2026-05-17Buckley Miller Wright NEGOTIATION72Elwin Sharvill
1021Greenwood BologniaArgentina2026-05-17Feltz Printing Service UNQUALIFIED50Anna Fali
1022Octavia MaletIndia2026-05-22Dorl, James J Esq RENEWAL79Bernardo Dominic
1023Misaki RoysterItaly2026-05-30Feltz Printing Service UNQUALIFIED90Asiya Javayant
1024Aika InouyeCanada2026-05-20Benton, John B Jr PROPOSAL51Xuxue Feng
1025Tony FollerSpain2026-06-03Chapman, Ross E Esq NEW99Elwin Sharvill
1026Octavia MaletFrance2026-06-11Feltz Printing Service PROPOSAL19Asiya Javayant
1027Silvio SlusarskiItaly2026-06-10Rousseaux, Michael Esq RENEWAL90Elwin Sharvill
1028Ivar PaprockiCanada2026-06-06Chanay, Jeffrey A Esq QUALIFIED37Anna Fali
1029James ButtJapan2026-05-27Rousseaux, Michael Esq QUALIFIED49Onyama Limba
1030Emily WhobreyItaly2026-05-17Dorl, James J Esq NEW89Stephen Shaw
1031Mujtaba NickaCanada2026-06-08Chanay, Jeffrey A Esq UNQUALIFIED54Anna Fali
1032Misaki RoysterJapan2026-05-22Feiner Bros PROPOSAL27Ivan Magalhaes
1033Jennifer AmigonSpain2026-06-08Printing Dimensions NEW98Anna Fali
1034Wickens NestleUnited Kingdom2026-05-14Benton, John B Jr UNQUALIFIED94Onyama Limba
1035Julie StensethAustralia2026-06-07Chanay, Jeffrey A Esq UNQUALIFIED71Xuxue Feng
1036Greenwood BologniaGermany2026-06-10Feiner Bros RENEWAL24Onyama Limba
1037Stacey MacleadRussia2026-06-02Truhlar And Truhlar Attys UNQUALIFIED15Ioni Bowcher
1038Francesco ShinkoArgentina2026-06-10Printing Dimensions UNQUALIFIED32Asiya Javayant
1039David DarakjyFrance2026-06-03Rousseaux, Michael Esq NEW88Amy Elsner
1040Costa DilliardAustralia2026-06-02Dorl, James J Esq QUALIFIED92Anna Fali
1041Aika InouyeFrance2026-06-07Feiner Bros QUALIFIED69Ioni Bowcher
1042Leon OldroydCanada2026-06-01Rousseaux, Michael Esq UNQUALIFIED89Stephen Shaw
1043Francesco ShinkoArgentina2026-05-18Truhlar And Truhlar Attys RENEWAL91Bernardo Dominic
1044Jones VocelkaFrance2026-05-16Truhlar And Truhlar Attys NEGOTIATION5Amy Elsner
1045David DarakjyArgentina2026-06-02King, Christopher A Esq NEGOTIATION93Xuxue Feng
1046Ivar PaprockiArgentina2026-05-21King, Christopher A Esq RENEWAL65Anna Fali
1047Aditya KuskoSpain2026-05-27Feltz Printing Service UNQUALIFIED50Amy Elsner
1048Munro FerenczBrazil2026-05-15Rangoni Of Florence RENEWAL48Anna Fali
1049Stacey MacleadArgentina2026-05-16Dorl, James J Esq QUALIFIED29Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Ashley DoeFranceBernardo Dominic PROPOSAL
Jones VocelkaAustraliaAmy Elsner NEGOTIATION
Leja CaldareraItalyAmy Elsner PROPOSAL
Faith GillianAustraliaElwin Sharvill UNQUALIFIED
Smith GlickGermanyStephen Shaw NEGOTIATION
Stacey MacleadFranceStephen Shaw NEGOTIATION
Cody SaylorsUnited KingdomXuxue Feng UNQUALIFIED
Salvatore StockhamGermanyXuxue Feng PROPOSAL
Ivar PaprockiAustraliaAmy Elsner QUALIFIED
Alejandro PerinItalyIoni Bowcher NEW
Nicolas IturbideSpainXuxue Feng RENEWAL
Julie StensethCanadaAnna Fali RENEWAL
Izzy GarufiIndiaElwin Sharvill NEGOTIATION
Claire TollnerFranceStephen Shaw RENEWAL
Ashley DoeArgentinaXuxue Feng PROPOSAL
James ButtRussiaAmy Elsner PROPOSAL
Isabel BowleyItalyAmy Elsner UNQUALIFIED
Leja CaldareraUnited KingdomElwin Sharvill UNQUALIFIED
Smith GlickJapanIoni Bowcher NEW
Adams MorascaRussiaAnna Fali PROPOSAL
Kadeem FlosiGermanyStephen Shaw QUALIFIED
Ashley DoeBrazilAsiya Javayant NEGOTIATION
Mayumi KolmetzCanadaIvan Magalhaes PROPOSAL
Mayumi KolmetzIndiaIvan Magalhaes UNQUALIFIED
Leon OldroydAustraliaOnyama Limba UNQUALIFIED
Aditya KuskoCanadaAsiya Javayant NEGOTIATION
Johnson SergiUnited KingdomAmy Elsner RENEWAL
Adams MorascaIndiaBernardo Dominic UNQUALIFIED
Ivar PaprockiCanadaIvan Magalhaes RENEWAL
Jeanfrancois VenereItalyOnyama Limba QUALIFIED
Smith GlickJapanStephen Shaw PROPOSAL
Octavia MaletRussiaStephen Shaw QUALIFIED
Sinclair WaycottRussiaAmy Elsner UNQUALIFIED
Chavez BriddickCanadaElwin Sharvill QUALIFIED
Smith GlickBrazilXuxue Feng NEGOTIATION
Kaitlin OstroskyAustraliaAsiya Javayant UNQUALIFIED
Mujtaba NickaItalyIoni Bowcher PROPOSAL
Sinclair WaycottRussiaBernardo Dominic RENEWAL
Leja CaldareraCanadaOnyama Limba PROPOSAL
Kaitlin OstroskyGermanyOnyama Limba NEGOTIATION
Jeanfrancois VenereAustraliaIoni Bowcher NEGOTIATION
Juan WieserFranceOnyama Limba NEW
Misaki RoysterCanadaStephen Shaw RENEWAL
Chavez BriddickAustraliaStephen Shaw RENEWAL
Cody SaylorsArgentinaXuxue Feng UNQUALIFIED
Faith GillianAustraliaElwin Sharvill RENEWAL
Tony FollerIndiaStephen Shaw PROPOSAL
Francesco ShinkoUnited KingdomIoni Bowcher NEGOTIATION
Munro FerenczCanadaBernardo Dominic RENEWAL
Mayumi KolmetzFranceAnna Fali QUALIFIED
Frozen Columns
Name
Tony Foller
Octavia Malet
Isabel Bowley
Munro Ferencz
Aditya Kusko
Ricardo Gaucho
Chavez Briddick
James Butt
Greenwood Bolognia
Alejandro Perin
Rodrigues Campain
Julie Stenseth
Ashley Doe
Nicolas Iturbide
Morrow Ruta
Darci Poquette
Juan Wieser
Izzy Garufi
Juan Wieser
Munro Ferencz
Maria Marrier
Maria Marrier
Clifford Rim
Maisha Rulapaugh
Maisha Rulapaugh
Ashley Doe
Arvin Albares
Greenwood Bolognia
Munro Ferencz
Clifford Rim
Tony Foller
James Butt
Francesco Shinko
Antonio Caudy
Munro Ferencz
Jones Vocelka
Silvio Slusarski
Ricardo Gaucho
Ivar Paprocki
Smith Glick
Sinclair Waycott
Izzy Garufi
Octavia Malet
Aditya Kusko
Aditya Kusko
Ricardo Gaucho
Johnson Sergi
Silvio Slusarski
Clifford Rim
Wickens Nestle
IdCountryDate
1000Argentina2026-05-15
1001Australia2026-06-02
1002Italy2026-05-14
1003Russia2026-05-23
1004Australia2026-06-10
1005United Kingdom2026-05-15
1006Japan2026-05-14
1007Italy2026-05-27
1008Russia2026-06-08
1009India2026-05-18
1010Germany2026-05-14
1011Brazil2026-06-06
1012Russia2026-05-26
1013Germany2026-05-23
1014Italy2026-05-23
1015United Kingdom2026-06-11
1016Argentina2026-05-22
1017India2026-06-06
1018Russia2026-05-31
1019France2026-05-30
1020Canada2026-06-08
1021Argentina2026-05-30
1022Canada2026-05-13
1023United Kingdom2026-06-05
1024Japan2026-06-05
1025United Kingdom2026-05-24
1026Italy2026-05-15
1027Argentina2026-06-09
1028India2026-06-05
1029Germany2026-06-05
1030United Kingdom2026-05-21
1031Spain2026-05-19
1032Japan2026-06-02
1033Italy2026-06-01
1034India2026-05-24
1035Italy2026-05-29
1036Germany2026-06-11
1037India2026-05-15
1038Argentina2026-05-20
1039Brazil2026-05-22
1040Russia2026-06-02
1041Russia2026-06-07
1042Italy2026-05-31
1043France2026-05-21
1044United Kingdom2026-05-17
1045France2026-05-18
1046Brazil2026-06-03
1047Canada2026-06-07
1048Spain2026-05-30
1049Spain2026-05-30

On-Demand Data

NameIdCountryDate
Deepesh Chui1000India2026-05-29
Alejandro Perin1001Italy2026-05-16
Emily Whobrey1002Canada2026-05-15
James Butt1003Russia2026-05-22
Greenwood Bolognia1004France2026-05-25
Munro Ferencz1005Australia2026-06-07
Jefferson Schemmer1006Spain2026-06-02
David Darakjy1007Argentina2026-06-11
Morrow Ruta1008Spain2026-06-01
Johnson Sergi1009Italy2026-05-31
Leja Caldarera1010Germany2026-05-26
Arvin Albares1011France2026-06-11
Jones Vocelka1012Spain2026-05-17
Jennifer Amigon1013Spain2026-05-28
Aditya Kusko1014Russia2026-06-01
Nicolas Iturbide1015United Kingdom2026-05-31
Salvatore Stockham1016Spain2026-06-03
Julie Stenseth1017United Kingdom2026-05-14
Ashley Doe1018Brazil2026-05-16
Jefferson Schemmer1019Australia2026-06-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson SergiJapanIvan Magalhaes RENEWAL
Deepesh ChuiIndiaXuxue Feng QUALIFIED
Ivar PaprockiSpainIoni Bowcher NEW
Silvio SlusarskiCanadaAmy Elsner UNQUALIFIED
Salvatore StockhamCanadaStephen Shaw RENEWAL
Silvio SlusarskiRussiaOnyama Limba NEW
Sinclair WaycottJapanStephen Shaw NEW
Izzy GarufiBrazilStephen Shaw QUALIFIED
Aditya KuskoIndiaBernardo Dominic NEGOTIATION
Morrow RutaAustraliaAmy Elsner QUALIFIED
Ivar PaprockiJapanAsiya Javayant UNQUALIFIED
Jennifer AmigonItalyBernardo Dominic NEW
Morrow RutaArgentinaAsiya Javayant NEGOTIATION
Aditya KuskoSpainStephen Shaw NEW
Chavez BriddickGermanyAmy Elsner NEW
Aruna FigeroaArgentinaXuxue Feng QUALIFIED
Smith GlickRussiaIvan Magalhaes UNQUALIFIED
Juan WieserGermanyAmy Elsner RENEWAL
Francesco ShinkoIndiaBernardo Dominic NEGOTIATION
Wickens NestleIndiaIvan Magalhaes NEGOTIATION
Kaitlin OstroskyJapanXuxue Feng UNQUALIFIED
Claire TollnerBrazilOnyama Limba UNQUALIFIED
Izzy GarufiAustraliaElwin Sharvill NEGOTIATION
Murillo MaletFranceAnna Fali NEGOTIATION
Darci PoquetteBrazilBernardo Dominic NEW
Clifford RimSpainStephen Shaw PROPOSAL
Chavez BriddickIndiaAmy Elsner QUALIFIED
Jones VocelkaSpainOnyama Limba RENEWAL
Johnson SergiIndiaBernardo Dominic NEGOTIATION
Silvio SlusarskiIndiaStephen Shaw QUALIFIED
Ricardo GauchoUnited KingdomIvan Magalhaes QUALIFIED
David DarakjySpainStephen Shaw RENEWAL
Morrow RutaRussiaAnna Fali QUALIFIED
Jeanfrancois VenereJapanIvan Magalhaes NEW
Tony FollerUnited KingdomIoni Bowcher UNQUALIFIED
Emily WhobreyCanadaAnna Fali PROPOSAL
Stacey MacleadSpainAmy Elsner UNQUALIFIED
Nicolas IturbideArgentinaOnyama Limba NEGOTIATION
Darci PoquetteCanadaAmy Elsner RENEWAL
Kaitlin OstroskyArgentinaIvan Magalhaes 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>