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
Ashley DoeIndiaIvan Magalhaes PROPOSAL
Jones VocelkaSpainOnyama Limba UNQUALIFIED
Maisha RulapaughFranceStephen Shaw QUALIFIED
Emily WhobreyUnited KingdomAsiya Javayant QUALIFIED
Antonio CaudyUnited KingdomIvan Magalhaes UNQUALIFIED
Mayumi KolmetzGermanyOnyama Limba NEGOTIATION
Faith GillianGermanyIvan Magalhaes PROPOSAL
Isabel BowleyBrazilElwin Sharvill NEW
Ashley DoeBrazilXuxue Feng NEGOTIATION
Rodrigues CampainRussiaIvan Magalhaes NEGOTIATION
Jefferson SchemmerArgentinaAsiya Javayant NEW
Smith GlickAustraliaElwin Sharvill QUALIFIED
Antonio CaudyUnited KingdomAnna Fali RENEWAL
Adams MorascaJapanOnyama Limba RENEWAL
Deepesh ChuiAustraliaIvan Magalhaes UNQUALIFIED
Izzy GarufiBrazilStephen Shaw QUALIFIED
Jefferson SchemmerJapanElwin Sharvill NEW
Francesco ShinkoSpainAmy Elsner QUALIFIED
Wickens NestleBrazilAnna Fali RENEWAL
Greenwood BologniaArgentinaAmy Elsner QUALIFIED
Murillo MaletIndiaBernardo Dominic NEW
Mujtaba NickaGermanyXuxue Feng UNQUALIFIED
Salvatore StockhamFranceAsiya Javayant PROPOSAL
Ricardo GauchoUnited KingdomOnyama Limba QUALIFIED
Aditya KuskoItalyElwin Sharvill QUALIFIED
Adams MorascaIndiaBernardo Dominic QUALIFIED
Isabel BowleyAustraliaAsiya Javayant UNQUALIFIED
Claire TollnerArgentinaXuxue Feng QUALIFIED
David DarakjyFranceXuxue Feng RENEWAL
Kaitlin OstroskyArgentinaXuxue Feng QUALIFIED
Mayumi KolmetzCanadaIoni Bowcher UNQUALIFIED
Isabel BowleyItalyXuxue Feng NEGOTIATION
Ivar PaprockiIndiaIoni Bowcher PROPOSAL
Sinclair WaycottAustraliaXuxue Feng PROPOSAL
Isabel BowleyRussiaBernardo Dominic PROPOSAL
Arvin AlbaresArgentinaIvan Magalhaes PROPOSAL
Misaki RoysterIndiaStephen Shaw NEGOTIATION
Deepesh ChuiArgentinaElwin Sharvill UNQUALIFIED
Ashley DoeUnited KingdomXuxue Feng QUALIFIED
Munro FerenczRussiaIoni Bowcher NEW
Antonio CaudyFranceAsiya Javayant RENEWAL
Kadeem FlosiArgentinaAmy Elsner RENEWAL
Rodrigues CampainBrazilBernardo Dominic NEGOTIATION
Julie StensethUnited KingdomElwin Sharvill RENEWAL
Octavia MaletCanadaOnyama Limba PROPOSAL
Leja CaldareraRussiaOnyama Limba NEGOTIATION
Ivar PaprockiAustraliaStephen Shaw NEGOTIATION
Faith GillianFranceElwin Sharvill UNQUALIFIED
Sinclair WaycottAustraliaXuxue Feng NEGOTIATION
Silvio SlusarskiGermanyAmy Elsner QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Mujtaba NickaAustraliaIoni Bowcher UNQUALIFIED
Adams MorascaUnited KingdomBernardo Dominic PROPOSAL
Tony FollerJapanStephen Shaw PROPOSAL
Ricardo GauchoBrazilAmy Elsner NEW
Antonio CaudyFranceAmy Elsner NEW
Greenwood BologniaArgentinaStephen Shaw RENEWAL
Clifford RimJapanBernardo Dominic QUALIFIED
Alejandro PerinIndiaIvan Magalhaes RENEWAL
Nicolas IturbideUnited KingdomOnyama Limba NEW
Emily WhobreyJapanElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio SlusarskiBrazil2026-04-01Feltz Printing Service RENEWAL94Ioni Bowcher
1001Chavez BriddickJapan2026-04-16Truhlar And Truhlar Attys UNQUALIFIED16Ivan Magalhaes
1002Ivar PaprockiCanada2026-04-24Truhlar And Truhlar Attys RENEWAL35Xuxue Feng
1003Ashley DoeSpain2026-04-17Dorl, James J Esq UNQUALIFIED19Onyama Limba
1004Kadeem FlosiArgentina2026-04-08King, Christopher A Esq UNQUALIFIED22Stephen Shaw
1005Munro FerenczCanada2026-04-22Benton, John B Jr RENEWAL74Stephen Shaw
1006Jennifer AmigonBrazil2026-04-13Buckley Miller Wright QUALIFIED31Stephen Shaw
1007Francesco ShinkoItaly2026-04-17Rousseaux, Michael Esq NEGOTIATION60Ioni Bowcher
1008Rodrigues CampainJapan2026-04-19Dorl, James J Esq PROPOSAL23Bernardo Dominic
1009Ivar PaprockiArgentina2026-04-15Feiner Bros RENEWAL79Ivan Magalhaes
1010Arvin AlbaresBrazil2026-04-23Truhlar And Truhlar Attys NEW43Xuxue Feng
1011Adams MorascaIndia2026-04-22Truhlar And Truhlar Attys NEW32Onyama Limba
1012Maisha RulapaughItaly2026-04-10Dorl, James J Esq PROPOSAL65Amy Elsner
1013Morrow RutaRussia2026-04-06Chanay, Jeffrey A Esq RENEWAL29Amy Elsner
1014Jeanfrancois VenereJapan2026-03-31Chapman, Ross E Esq RENEWAL32Amy Elsner
1015Aditya KuskoArgentina2026-04-12Feltz Printing Service QUALIFIED87Asiya Javayant
1016Wickens NestleGermany2026-04-09Chanay, Jeffrey A Esq UNQUALIFIED14Asiya Javayant
1017Stacey MacleadRussia2026-04-16Chanay, Jeffrey A Esq PROPOSAL81Ivan Magalhaes
1018Francesco ShinkoCanada2026-04-10Dorl, James J Esq NEGOTIATION42Elwin Sharvill
1019Mujtaba NickaSpain2026-04-05Benton, John B Jr NEW51Ioni Bowcher
1020Tony FollerRussia2026-04-12Rangoni Of Florence PROPOSAL35Asiya Javayant
1021Maisha RulapaughRussia2026-04-12Benton, John B Jr UNQUALIFIED4Stephen Shaw
1022Sinclair WaycottFrance2026-03-31Rousseaux, Michael Esq PROPOSAL60Ioni Bowcher
1023Adams MorascaUnited Kingdom2026-04-13Chapman, Ross E Esq NEGOTIATION59Elwin Sharvill
1024David DarakjyItaly2026-04-06Printing Dimensions NEGOTIATION39Amy Elsner
1025Faith GillianRussia2026-04-22Chanay, Jeffrey A Esq PROPOSAL78Stephen Shaw
1026Murillo MaletGermany2026-04-02Commercial Press NEGOTIATION16Onyama Limba
1027Deepesh ChuiArgentina2026-03-30Buckley Miller Wright NEW31Anna Fali
1028Salvatore StockhamUnited Kingdom2026-04-13Feiner Bros NEW65Xuxue Feng
1029Octavia MaletUnited Kingdom2026-04-26Rousseaux, Michael Esq NEW99Ioni Bowcher
1030Julie StensethGermany2026-04-19Rousseaux, Michael Esq NEGOTIATION3Elwin Sharvill
1031Claire TollnerItaly2026-04-11Chapman, Ross E Esq UNQUALIFIED49Asiya Javayant
1032Wickens NestleSpain2026-04-14King, Christopher A Esq PROPOSAL75Ioni Bowcher
1033Nicolas IturbideRussia2026-04-13Buckley Miller Wright NEW99Elwin Sharvill
1034Cody SaylorsFrance2026-04-10Buckley Miller Wright QUALIFIED23Amy Elsner
1035Francesco ShinkoAustralia2026-04-27Commercial Press PROPOSAL38Ivan Magalhaes
1036Ivar PaprockiSpain2026-04-22Morlong Associates PROPOSAL27Bernardo Dominic
1037Ricardo GauchoCanada2026-04-09Buckley Miller Wright RENEWAL42Amy Elsner
1038Leja CaldareraGermany2026-04-19Morlong Associates UNQUALIFIED33Elwin Sharvill
1039Juan WieserUnited Kingdom2026-04-23Chapman, Ross E Esq RENEWAL91Xuxue Feng
1040Isabel BowleyArgentina2026-04-04Rousseaux, Michael Esq NEW2Onyama Limba
1041Misaki RoysterGermany2026-04-24Chanay, Jeffrey A Esq PROPOSAL32Anna Fali
1042Johnson SergiUnited Kingdom2026-04-20Morlong Associates QUALIFIED13Asiya Javayant
1043Nicolas IturbideRussia2026-04-26King, Christopher A Esq RENEWAL42Ioni Bowcher
1044Sinclair WaycottArgentina2026-04-21Benton, John B Jr UNQUALIFIED0Anna Fali
1045Aditya KuskoArgentina2026-04-02Truhlar And Truhlar Attys PROPOSAL26Amy Elsner
1046Greenwood BologniaItaly2026-04-27Printing Dimensions QUALIFIED13Asiya Javayant
1047Leja CaldareraBrazil2026-04-17Printing Dimensions RENEWAL53Asiya Javayant
1048Ashley DoeBrazil2026-04-03Chanay, Jeffrey A Esq PROPOSAL36Anna Fali
1049Antonio CaudyUnited Kingdom2026-04-28Dorl, James J Esq RENEWAL21Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Isabel BowleyCanadaElwin Sharvill QUALIFIED
Misaki RoysterUnited KingdomIvan Magalhaes QUALIFIED
Alejandro PerinIndiaElwin Sharvill QUALIFIED
Munro FerenczSpainStephen Shaw RENEWAL
Costa DilliardGermanyAsiya Javayant NEW
Clifford RimRussiaBernardo Dominic NEW
Johnson SergiGermanyBernardo Dominic PROPOSAL
Kadeem FlosiUnited KingdomAsiya Javayant NEW
Nicolas IturbideItalyXuxue Feng PROPOSAL
Morrow RutaRussiaAsiya Javayant UNQUALIFIED
Claire TollnerCanadaOnyama Limba UNQUALIFIED
Murillo MaletSpainAmy Elsner PROPOSAL
Claire TollnerItalyXuxue Feng NEGOTIATION
Mayumi KolmetzRussiaAsiya Javayant PROPOSAL
Ricardo GauchoRussiaElwin Sharvill UNQUALIFIED
Jennifer AmigonArgentinaXuxue Feng RENEWAL
Stacey MacleadRussiaOnyama Limba QUALIFIED
Silvio SlusarskiGermanyAmy Elsner NEGOTIATION
Costa DilliardCanadaStephen Shaw PROPOSAL
Greenwood BologniaUnited KingdomIoni Bowcher PROPOSAL
Munro FerenczFranceIoni Bowcher QUALIFIED
Stacey MacleadFranceAsiya Javayant PROPOSAL
Kaitlin OstroskyRussiaIvan Magalhaes UNQUALIFIED
Alejandro PerinSpainOnyama Limba RENEWAL
Deepesh ChuiUnited KingdomElwin Sharvill NEW
Claire TollnerJapanAsiya Javayant PROPOSAL
Isabel BowleySpainIoni Bowcher NEGOTIATION
Clifford RimFranceElwin Sharvill NEGOTIATION
Costa DilliardCanadaIvan Magalhaes UNQUALIFIED
Claire TollnerUnited KingdomBernardo Dominic QUALIFIED
Stacey MacleadJapanAmy Elsner NEGOTIATION
Isabel BowleyArgentinaAnna Fali QUALIFIED
Ricardo GauchoAustraliaOnyama Limba NEW
Alejandro PerinItalyAmy Elsner RENEWAL
Kaitlin OstroskyRussiaBernardo Dominic QUALIFIED
Emily WhobreyJapanStephen Shaw PROPOSAL
Julie StensethAustraliaIvan Magalhaes PROPOSAL
Leja CaldareraIndiaStephen Shaw PROPOSAL
Leja CaldareraFranceAnna Fali RENEWAL
Jefferson SchemmerBrazilElwin Sharvill UNQUALIFIED
Aika InouyeCanadaElwin Sharvill UNQUALIFIED
Aika InouyeItalyElwin Sharvill QUALIFIED
Ivar PaprockiGermanyElwin Sharvill NEW
Wickens NestleBrazilElwin Sharvill PROPOSAL
David DarakjyArgentinaAmy Elsner RENEWAL
Octavia MaletAustraliaElwin Sharvill NEGOTIATION
Adams MorascaUnited KingdomStephen Shaw NEW
Ivar PaprockiCanadaAnna Fali QUALIFIED
Mujtaba NickaAustraliaXuxue Feng NEW
Darci PoquetteItalyAmy Elsner QUALIFIED
Frozen Columns
Name
Maisha Rulapaugh
Mayumi Kolmetz
Isabel Bowley
Kaitlin Ostrosky
Costa Dilliard
Jeanfrancois Venere
Emily Whobrey
Clifford Rim
Jones Vocelka
Aika Inouye
Greenwood Bolognia
Ricardo Gaucho
Darci Poquette
Wickens Nestle
Octavia Malet
Kadeem Flosi
Darci Poquette
Ricardo Gaucho
Octavia Malet
Ricardo Gaucho
Francesco Shinko
Smith Glick
James Butt
Isabel Bowley
Silvio Slusarski
Jennifer Amigon
Deepesh Chui
Arvin Albares
Salvatore Stockham
Johnson Sergi
Jones Vocelka
Murillo Malet
Julie Stenseth
Izzy Garufi
Silvio Slusarski
Alejandro Perin
Jennifer Amigon
Emily Whobrey
Nicolas Iturbide
Maisha Rulapaugh
Rodrigues Campain
Leja Caldarera
Emily Whobrey
Isabel Bowley
Octavia Malet
Munro Ferencz
Alejandro Perin
Mayumi Kolmetz
Juan Wieser
Darci Poquette
IdCountryDate
1000United Kingdom2026-04-09
1001Japan2026-04-04
1002Germany2026-04-11
1003United Kingdom2026-04-09
1004France2026-04-10
1005Italy2026-04-12
1006United Kingdom2026-04-24
1007Spain2026-04-11
1008Russia2026-04-06
1009United Kingdom2026-04-14
1010United Kingdom2026-04-11
1011Germany2026-04-03
1012Italy2026-04-03
1013United Kingdom2026-04-04
1014Argentina2026-04-09
1015India2026-04-01
1016Canada2026-03-30
1017France2026-03-30
1018Russia2026-04-04
1019Argentina2026-03-31
1020United Kingdom2026-03-30
1021Canada2026-04-05
1022United Kingdom2026-04-03
1023Russia2026-04-05
1024Germany2026-04-21
1025India2026-04-09
1026India2026-04-05
1027Germany2026-04-27
1028Germany2026-03-31
1029Brazil2026-04-24
1030Canada2026-04-17
1031Germany2026-04-23
1032Spain2026-04-01
1033France2026-04-22
1034India2026-04-21
1035Russia2026-03-30
1036Australia2026-04-01
1037Japan2026-04-16
1038Spain2026-04-22
1039India2026-04-16
1040Italy2026-04-03
1041India2026-04-07
1042Spain2026-04-04
1043Brazil2026-04-11
1044Australia2026-04-04
1045Canada2026-04-13
1046Italy2026-04-17
1047Brazil2026-04-06
1048Germany2026-04-02
1049France2026-03-31

On-Demand Data

NameIdCountryDate
Antonio Caudy1000Brazil2026-04-01
James Butt1001Argentina2026-04-13
Wickens Nestle1002Argentina2026-04-12
Juan Wieser1003Japan2026-04-04
Morrow Ruta1004Germany2026-04-15
Chavez Briddick1005Australia2026-03-30
Maisha Rulapaugh1006Italy2026-04-07
Mayumi Kolmetz1007India2026-04-17
Johnson Sergi1008Germany2026-04-17
Leja Caldarera1009United Kingdom2026-04-21
Aruna Figeroa1010Argentina2026-04-05
Arvin Albares1011Australia2026-04-26
Juan Wieser1012United Kingdom2026-04-11
Morrow Ruta1013Argentina2026-04-11
Jefferson Schemmer1014Italy2026-04-28
Chavez Briddick1015Canada2026-04-11
Sinclair Waycott1016Australia2026-04-17
Arvin Albares1017Russia2026-04-07
Chavez Briddick1018Japan2026-04-26
Salvatore Stockham1019Canada2026-04-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois VenereBrazilStephen Shaw UNQUALIFIED
Alejandro PerinCanadaXuxue Feng QUALIFIED
Rodrigues CampainIndiaBernardo Dominic NEW
Maisha RulapaughCanadaElwin Sharvill NEGOTIATION
Isabel BowleyIndiaXuxue Feng RENEWAL
Jefferson SchemmerGermanyXuxue Feng UNQUALIFIED
Morrow RutaIndiaAnna Fali NEGOTIATION
Jones VocelkaJapanBernardo Dominic QUALIFIED
James ButtJapanStephen Shaw QUALIFIED
Aditya KuskoIndiaStephen Shaw NEGOTIATION
Jefferson SchemmerIndiaXuxue Feng RENEWAL
Adams MorascaSpainOnyama Limba RENEWAL
Francesco ShinkoRussiaIvan Magalhaes PROPOSAL
Ricardo GauchoSpainXuxue Feng NEW
David DarakjyItalyAsiya Javayant RENEWAL
Faith GillianArgentinaAsiya Javayant RENEWAL
Misaki RoysterSpainOnyama Limba UNQUALIFIED
Jennifer AmigonBrazilIvan Magalhaes PROPOSAL
Jennifer AmigonCanadaStephen Shaw RENEWAL
Antonio CaudyFranceIvan Magalhaes NEGOTIATION
Ashley DoeGermanyOnyama Limba QUALIFIED
Johnson SergiGermanyAnna Fali NEGOTIATION
James ButtRussiaIvan Magalhaes NEGOTIATION
Johnson SergiIndiaElwin Sharvill RENEWAL
Silvio SlusarskiBrazilAmy Elsner NEGOTIATION
Izzy GarufiRussiaIvan Magalhaes RENEWAL
Mujtaba NickaCanadaStephen Shaw RENEWAL
Aditya KuskoSpainStephen Shaw UNQUALIFIED
Rodrigues CampainItalyAsiya Javayant NEW
Wickens NestleArgentinaIvan Magalhaes RENEWAL
Kaitlin OstroskyIndiaXuxue Feng RENEWAL
Nicolas IturbideJapanBernardo Dominic NEGOTIATION
Emily WhobreyItalyAsiya Javayant PROPOSAL
Jones VocelkaArgentinaOnyama Limba NEW
Salvatore StockhamItalyIvan Magalhaes QUALIFIED
Tony FollerCanadaAsiya Javayant NEW
Misaki RoysterArgentinaElwin Sharvill UNQUALIFIED
Chavez BriddickRussiaBernardo Dominic UNQUALIFIED
Aditya KuskoGermanyXuxue Feng UNQUALIFIED
Johnson SergiBrazilAsiya Javayant 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>