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
Izzy GarufiArgentinaBernardo Dominic UNQUALIFIED
Ivar PaprockiSpainIvan Magalhaes QUALIFIED
Juan WieserJapanIoni Bowcher UNQUALIFIED
Munro FerenczCanadaBernardo Dominic UNQUALIFIED
Silvio SlusarskiJapanAsiya Javayant UNQUALIFIED
Adams MorascaItalyAmy Elsner NEW
Leja CaldareraCanadaXuxue Feng RENEWAL
Wickens NestleJapanElwin Sharvill QUALIFIED
Jennifer AmigonArgentinaAsiya Javayant NEGOTIATION
Antonio CaudyItalyBernardo Dominic QUALIFIED
Johnson SergiCanadaBernardo Dominic QUALIFIED
Leja CaldareraSpainAsiya Javayant PROPOSAL
Greenwood BologniaIndiaXuxue Feng NEW
Antonio CaudyCanadaElwin Sharvill QUALIFIED
James ButtItalyAsiya Javayant PROPOSAL
David DarakjyIndiaElwin Sharvill QUALIFIED
Adams MorascaArgentinaIvan Magalhaes NEGOTIATION
Munro FerenczUnited KingdomIoni Bowcher RENEWAL
Salvatore StockhamAustraliaIvan Magalhaes NEW
Silvio SlusarskiCanadaAsiya Javayant NEW
Darci PoquetteJapanIvan Magalhaes PROPOSAL
Kadeem FlosiBrazilXuxue Feng QUALIFIED
Deepesh ChuiCanadaAsiya Javayant QUALIFIED
Deepesh ChuiFranceStephen Shaw QUALIFIED
Jennifer AmigonBrazilOnyama Limba NEGOTIATION
Aika InouyeAustraliaElwin Sharvill UNQUALIFIED
Morrow RutaFranceElwin Sharvill NEGOTIATION
James ButtUnited KingdomAmy Elsner PROPOSAL
Mujtaba NickaRussiaStephen Shaw NEGOTIATION
Tony FollerItalyBernardo Dominic PROPOSAL
Johnson SergiFranceStephen Shaw RENEWAL
Munro FerenczSpainStephen Shaw RENEWAL
Johnson SergiArgentinaStephen Shaw RENEWAL
Greenwood BologniaAustraliaElwin Sharvill QUALIFIED
Nicolas IturbideCanadaIoni Bowcher QUALIFIED
Leon OldroydUnited KingdomIoni Bowcher UNQUALIFIED
Jeanfrancois VenereFranceIoni Bowcher NEGOTIATION
Julie StensethGermanyAmy Elsner NEW
David DarakjyItalyAnna Fali PROPOSAL
Jones VocelkaBrazilOnyama Limba NEW
Jeanfrancois VenereSpainOnyama Limba QUALIFIED
Chavez BriddickArgentinaStephen Shaw QUALIFIED
Clifford RimUnited KingdomOnyama Limba NEW
Kaitlin OstroskySpainElwin Sharvill NEGOTIATION
Maisha RulapaughJapanAnna Fali RENEWAL
Aruna FigeroaItalyOnyama Limba QUALIFIED
Salvatore StockhamSpainAmy Elsner RENEWAL
Nicolas IturbideUnited KingdomAnna Fali PROPOSAL
Alejandro PerinIndiaAsiya Javayant UNQUALIFIED
Ricardo GauchoUnited KingdomIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Alejandro PerinItalyXuxue Feng QUALIFIED
Darci PoquetteIndiaIvan Magalhaes QUALIFIED
Jennifer AmigonArgentinaElwin Sharvill RENEWAL
Greenwood BologniaCanadaElwin Sharvill QUALIFIED
Leja CaldareraFranceStephen Shaw UNQUALIFIED
Jefferson SchemmerSpainIvan Magalhaes RENEWAL
Murillo MaletCanadaStephen Shaw UNQUALIFIED
Costa DilliardSpainStephen Shaw NEW
Francesco ShinkoCanadaXuxue Feng PROPOSAL
Deepesh ChuiCanadaStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel BowleyAustralia2026-05-03Rangoni Of Florence UNQUALIFIED5Onyama Limba
1001Clifford RimArgentina2026-05-02Buckley Miller Wright QUALIFIED62Stephen Shaw
1002Adams MorascaCanada2026-04-23Printing Dimensions NEGOTIATION87Ivan Magalhaes
1003Julie StensethItaly2026-05-02Chemel, James L Cpa NEGOTIATION54Onyama Limba
1004Rodrigues CampainBrazil2026-05-09Rousseaux, Michael Esq RENEWAL48Amy Elsner
1005James ButtIndia2026-05-01Rangoni Of Florence UNQUALIFIED53Bernardo Dominic
1006Faith GillianFrance2026-04-21Rousseaux, Michael Esq QUALIFIED85Bernardo Dominic
1007Kadeem FlosiAustralia2026-04-14Feiner Bros RENEWAL95Ioni Bowcher
1008Morrow RutaSpain2026-04-21Chapman, Ross E Esq QUALIFIED67Anna Fali
1009Alejandro PerinCanada2026-04-18Chanay, Jeffrey A Esq QUALIFIED44Ivan Magalhaes
1010Misaki RoysterGermany2026-04-27Feiner Bros UNQUALIFIED29Asiya Javayant
1011Faith GillianGermany2026-04-15Truhlar And Truhlar Attys RENEWAL91Anna Fali
1012Jones VocelkaUnited Kingdom2026-04-18King, Christopher A Esq UNQUALIFIED18Ivan Magalhaes
1013Arvin AlbaresGermany2026-04-23Truhlar And Truhlar Attys UNQUALIFIED10Bernardo Dominic
1014Darci PoquetteFrance2026-05-10Dorl, James J Esq PROPOSAL98Bernardo Dominic
1015Leon OldroydGermany2026-04-18Morlong Associates UNQUALIFIED67Elwin Sharvill
1016Emily WhobreyGermany2026-05-07Feiner Bros PROPOSAL59Ivan Magalhaes
1017Adams MorascaUnited Kingdom2026-05-01Chanay, Jeffrey A Esq QUALIFIED82Anna Fali
1018Wickens NestleItaly2026-05-03Dorl, James J Esq NEW85Xuxue Feng
1019Deepesh ChuiItaly2026-04-22King, Christopher A Esq PROPOSAL39Stephen Shaw
1020Salvatore StockhamGermany2026-04-17Commercial Press UNQUALIFIED27Bernardo Dominic
1021Murillo MaletSpain2026-04-22Feiner Bros QUALIFIED0Anna Fali
1022Jefferson SchemmerRussia2026-04-29Benton, John B Jr PROPOSAL45Onyama Limba
1023Kaitlin OstroskyJapan2026-04-16Rousseaux, Michael Esq UNQUALIFIED81Onyama Limba
1024Leon OldroydAustralia2026-05-10King, Christopher A Esq QUALIFIED27Onyama Limba
1025Faith GillianBrazil2026-04-22Dorl, James J Esq QUALIFIED77Amy Elsner
1026Kadeem FlosiCanada2026-04-22King, Christopher A Esq NEW18Bernardo Dominic
1027Jones VocelkaGermany2026-04-19Feiner Bros NEW22Amy Elsner
1028Tony FollerBrazil2026-05-02Chanay, Jeffrey A Esq UNQUALIFIED61Amy Elsner
1029Aruna FigeroaFrance2026-04-20Dorl, James J Esq RENEWAL17Xuxue Feng
1030Ricardo GauchoItaly2026-04-16Morlong Associates RENEWAL20Ioni Bowcher
1031Murillo MaletFrance2026-04-19Feiner Bros NEW50Anna Fali
1032Arvin AlbaresIndia2026-04-30Chapman, Ross E Esq PROPOSAL37Asiya Javayant
1033Isabel BowleyCanada2026-05-07Chemel, James L Cpa PROPOSAL24Ioni Bowcher
1034Greenwood BologniaCanada2026-05-03Truhlar And Truhlar Attys UNQUALIFIED19Asiya Javayant
1035Ivar PaprockiJapan2026-04-21Chemel, James L Cpa RENEWAL24Stephen Shaw
1036Aruna FigeroaJapan2026-05-08Morlong Associates NEGOTIATION60Asiya Javayant
1037Nicolas IturbideRussia2026-04-22Dorl, James J Esq QUALIFIED55Xuxue Feng
1038Misaki RoysterArgentina2026-04-25Rousseaux, Michael Esq NEGOTIATION64Amy Elsner
1039Mujtaba NickaItaly2026-04-20Dorl, James J Esq PROPOSAL32Onyama Limba
1040Chavez BriddickJapan2026-05-02Buckley Miller Wright NEW97Onyama Limba
1041Cody SaylorsFrance2026-05-01Rousseaux, Michael Esq NEGOTIATION7Elwin Sharvill
1042Smith GlickFrance2026-04-12Rangoni Of Florence QUALIFIED98Anna Fali
1043Wickens NestleRussia2026-04-27Printing Dimensions RENEWAL92Ioni Bowcher
1044Mujtaba NickaUnited Kingdom2026-04-16Commercial Press RENEWAL9Ivan Magalhaes
1045Juan WieserFrance2026-04-21Chanay, Jeffrey A Esq QUALIFIED95Amy Elsner
1046Silvio SlusarskiArgentina2026-04-24Benton, John B Jr NEW13Amy Elsner
1047Adams MorascaJapan2026-04-12Rousseaux, Michael Esq PROPOSAL95Ivan Magalhaes
1048Misaki RoysterRussia2026-05-09Chapman, Ross E Esq NEGOTIATION28Ioni Bowcher
1049Izzy GarufiIndia2026-04-26Truhlar And Truhlar Attys QUALIFIED78Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Maria MarrierArgentinaElwin Sharvill NEW
Claire TollnerIndiaIvan Magalhaes NEW
Aruna FigeroaRussiaStephen Shaw PROPOSAL
Wickens NestleFranceXuxue Feng QUALIFIED
Ricardo GauchoSpainAnna Fali RENEWAL
Aruna FigeroaItalyXuxue Feng NEGOTIATION
Leon OldroydFranceIoni Bowcher PROPOSAL
Cody SaylorsIndiaXuxue Feng UNQUALIFIED
Wickens NestleArgentinaAmy Elsner NEW
Emily WhobreyBrazilXuxue Feng PROPOSAL
David DarakjyIndiaStephen Shaw RENEWAL
Francesco ShinkoItalyBernardo Dominic NEGOTIATION
Julie StensethItalyStephen Shaw UNQUALIFIED
Julie StensethFranceIoni Bowcher NEW
Maisha RulapaughBrazilBernardo Dominic QUALIFIED
James ButtSpainBernardo Dominic PROPOSAL
Ashley DoeAustraliaAnna Fali PROPOSAL
James ButtArgentinaIoni Bowcher NEGOTIATION
Izzy GarufiArgentinaAmy Elsner PROPOSAL
Isabel BowleyCanadaAsiya Javayant RENEWAL
Jeanfrancois VenereSpainBernardo Dominic NEW
Ricardo GauchoSpainStephen Shaw QUALIFIED
Tony FollerAustraliaXuxue Feng QUALIFIED
Kadeem FlosiItalyElwin Sharvill NEGOTIATION
Greenwood BologniaSpainOnyama Limba NEW
Clifford RimArgentinaBernardo Dominic UNQUALIFIED
Misaki RoysterRussiaIoni Bowcher PROPOSAL
David DarakjyBrazilElwin Sharvill UNQUALIFIED
Deepesh ChuiIndiaIoni Bowcher NEGOTIATION
Aditya KuskoIndiaXuxue Feng NEW
Claire TollnerFranceAsiya Javayant QUALIFIED
Emily WhobreyBrazilStephen Shaw UNQUALIFIED
Leja CaldareraSpainXuxue Feng NEW
Francesco ShinkoBrazilAmy Elsner NEW
Kadeem FlosiItalyOnyama Limba UNQUALIFIED
Juan WieserGermanyAmy Elsner QUALIFIED
Greenwood BologniaFranceStephen Shaw PROPOSAL
Ashley DoeJapanXuxue Feng NEGOTIATION
Greenwood BologniaJapanAnna Fali UNQUALIFIED
Sinclair WaycottRussiaAsiya Javayant QUALIFIED
Salvatore StockhamGermanyIoni Bowcher RENEWAL
Adams MorascaRussiaBernardo Dominic NEW
Maisha RulapaughArgentinaOnyama Limba RENEWAL
Nicolas IturbideSpainAsiya Javayant UNQUALIFIED
Jones VocelkaAustraliaIvan Magalhaes RENEWAL
Murillo MaletItalyElwin Sharvill NEW
Izzy GarufiArgentinaAmy Elsner NEGOTIATION
Julie StensethJapanIoni Bowcher NEGOTIATION
Jennifer AmigonArgentinaIoni Bowcher PROPOSAL
Silvio SlusarskiArgentinaElwin Sharvill PROPOSAL
Frozen Columns
Name
Leja Caldarera
Ivar Paprocki
Alejandro Perin
Costa Dilliard
David Darakjy
Costa Dilliard
Stacey Maclead
Salvatore Stockham
Alejandro Perin
Mayumi Kolmetz
Mujtaba Nicka
Aditya Kusko
Octavia Malet
Jefferson Schemmer
Juan Wieser
Darci Poquette
Ivar Paprocki
Darci Poquette
Jefferson Schemmer
Aruna Figeroa
Arvin Albares
Murillo Malet
Mujtaba Nicka
Salvatore Stockham
Jeanfrancois Venere
Jefferson Schemmer
Antonio Caudy
Emily Whobrey
Darci Poquette
Izzy Garufi
Kaitlin Ostrosky
Salvatore Stockham
Adams Morasca
Deepesh Chui
Francesco Shinko
Jennifer Amigon
Aditya Kusko
Johnson Sergi
Jefferson Schemmer
Aditya Kusko
Silvio Slusarski
Wickens Nestle
Jennifer Amigon
Chavez Briddick
Cody Saylors
Leon Oldroyd
Nicolas Iturbide
Julie Stenseth
Isabel Bowley
Leja Caldarera
IdCountryDate
1000Brazil2026-04-30
1001Italy2026-04-15
1002Spain2026-04-30
1003Russia2026-04-24
1004Spain2026-04-17
1005Italy2026-05-03
1006Japan2026-04-12
1007Spain2026-04-17
1008Brazil2026-04-14
1009France2026-04-28
1010Canada2026-05-02
1011Russia2026-05-08
1012Russia2026-04-25
1013Russia2026-05-06
1014Brazil2026-05-08
1015India2026-05-10
1016India2026-04-14
1017Spain2026-04-29
1018France2026-05-09
1019India2026-04-29
1020Japan2026-04-21
1021Argentina2026-04-20
1022Germany2026-05-07
1023Italy2026-04-20
1024Canada2026-04-21
1025Japan2026-05-11
1026France2026-04-20
1027Canada2026-04-28
1028United Kingdom2026-05-04
1029Germany2026-05-02
1030United Kingdom2026-05-08
1031France2026-05-06
1032Canada2026-04-13
1033Germany2026-04-23
1034Russia2026-04-21
1035Italy2026-04-26
1036Canada2026-04-30
1037Germany2026-04-23
1038Germany2026-04-29
1039Spain2026-05-07
1040India2026-04-23
1041Canada2026-04-12
1042Australia2026-04-30
1043Japan2026-04-24
1044Canada2026-05-05
1045France2026-05-03
1046Australia2026-05-05
1047Canada2026-04-26
1048Japan2026-04-25
1049United Kingdom2026-04-24

On-Demand Data

NameIdCountryDate
Francesco Shinko1000Italy2026-05-06
Octavia Malet1001Germany2026-05-02
Stacey Maclead1002Japan2026-04-13
Octavia Malet1003United Kingdom2026-04-13
Leja Caldarera1004Germany2026-04-28
Clifford Rim1005Italy2026-04-27
Leja Caldarera1006Spain2026-04-24
Johnson Sergi1007Italy2026-04-12
Juan Wieser1008India2026-04-18
Jefferson Schemmer1009Canada2026-05-02
Ashley Doe1010France2026-04-12
Smith Glick1011Brazil2026-04-16
Murillo Malet1012Australia2026-05-01
Izzy Garufi1013France2026-05-06
Ivar Paprocki1014Germany2026-04-30
David Darakjy1015Argentina2026-04-19
Murillo Malet1016France2026-04-19
Izzy Garufi1017United Kingdom2026-05-09
Morrow Ruta1018Spain2026-04-24
Juan Wieser1019India2026-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia MaletJapanElwin Sharvill NEW
Jeanfrancois VenereJapanAsiya Javayant NEGOTIATION
Juan WieserSpainOnyama Limba NEGOTIATION
Darci PoquetteUnited KingdomAsiya Javayant UNQUALIFIED
Adams MorascaRussiaStephen Shaw PROPOSAL
Silvio SlusarskiFranceOnyama Limba RENEWAL
Juan WieserUnited KingdomElwin Sharvill NEGOTIATION
Jeanfrancois VenereFranceBernardo Dominic PROPOSAL
Ashley DoeAustraliaIvan Magalhaes PROPOSAL
Jones VocelkaAustraliaElwin Sharvill RENEWAL
Wickens NestleArgentinaAsiya Javayant UNQUALIFIED
Julie StensethRussiaAmy Elsner QUALIFIED
Chavez BriddickSpainOnyama Limba QUALIFIED
Sinclair WaycottGermanyIoni Bowcher NEGOTIATION
Aditya KuskoJapanStephen Shaw PROPOSAL
Kadeem FlosiJapanBernardo Dominic NEGOTIATION
Jeanfrancois VenereItalyElwin Sharvill PROPOSAL
Smith GlickArgentinaXuxue Feng RENEWAL
Salvatore StockhamGermanyAnna Fali NEW
Julie StensethFranceIvan Magalhaes NEGOTIATION
Jones VocelkaUnited KingdomAmy Elsner NEW
Murillo MaletCanadaAnna Fali PROPOSAL
Faith GillianItalyIoni Bowcher NEGOTIATION
Nicolas IturbideJapanElwin Sharvill PROPOSAL
Aika InouyeGermanyAsiya Javayant UNQUALIFIED
Darci PoquetteUnited KingdomBernardo Dominic PROPOSAL
Ricardo GauchoArgentinaXuxue Feng QUALIFIED
Wickens NestleIndiaElwin Sharvill PROPOSAL
Nicolas IturbideFranceBernardo Dominic RENEWAL
Misaki RoysterJapanAmy Elsner NEGOTIATION
Maria MarrierArgentinaAnna Fali RENEWAL
Alejandro PerinIndiaOnyama Limba QUALIFIED
Chavez BriddickRussiaStephen Shaw NEGOTIATION
Tony FollerItalyOnyama Limba RENEWAL
Mujtaba NickaSpainAsiya Javayant NEW
Kadeem FlosiFranceAmy Elsner UNQUALIFIED
Darci PoquetteUnited KingdomAmy Elsner QUALIFIED
Ivar PaprockiJapanStephen Shaw QUALIFIED
Ivar PaprockiItalyXuxue Feng RENEWAL
James ButtArgentinaAnna Fali NEW

<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>