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
Adams MorascaItalyAsiya Javayant RENEWAL
Kadeem FlosiBrazilOnyama Limba QUALIFIED
Adams MorascaAustraliaIvan Magalhaes QUALIFIED
Nicolas IturbideUnited KingdomIvan Magalhaes UNQUALIFIED
Murillo MaletFranceAsiya Javayant RENEWAL
Aika InouyeRussiaElwin Sharvill UNQUALIFIED
Antonio CaudyFranceXuxue Feng RENEWAL
Cody SaylorsJapanOnyama Limba NEGOTIATION
Jefferson SchemmerCanadaElwin Sharvill UNQUALIFIED
Tony FollerCanadaOnyama Limba PROPOSAL
Aruna FigeroaUnited KingdomAsiya Javayant UNQUALIFIED
Salvatore StockhamUnited KingdomAsiya Javayant PROPOSAL
Ashley DoeBrazilIvan Magalhaes QUALIFIED
Johnson SergiIndiaAsiya Javayant NEGOTIATION
Rodrigues CampainUnited KingdomAmy Elsner NEGOTIATION
Antonio CaudyFranceXuxue Feng PROPOSAL
Ivar PaprockiSpainAsiya Javayant PROPOSAL
Greenwood BologniaBrazilStephen Shaw PROPOSAL
Stacey MacleadBrazilOnyama Limba UNQUALIFIED
Tony FollerItalyAnna Fali NEW
Jennifer AmigonGermanyIvan Magalhaes NEGOTIATION
Johnson SergiBrazilXuxue Feng NEGOTIATION
Francesco ShinkoUnited KingdomAnna Fali RENEWAL
Costa DilliardUnited KingdomOnyama Limba NEW
Jennifer AmigonAustraliaIoni Bowcher NEGOTIATION
Darci PoquetteJapanIoni Bowcher UNQUALIFIED
Francesco ShinkoAustraliaStephen Shaw PROPOSAL
Maisha RulapaughIndiaIvan Magalhaes NEGOTIATION
Nicolas IturbideFranceElwin Sharvill NEW
Mayumi KolmetzJapanIvan Magalhaes UNQUALIFIED
Kadeem FlosiItalyAsiya Javayant RENEWAL
Wickens NestleArgentinaAsiya Javayant PROPOSAL
Arvin AlbaresArgentinaAmy Elsner RENEWAL
Misaki RoysterItalyAnna Fali QUALIFIED
Salvatore StockhamBrazilAmy Elsner RENEWAL
Alejandro PerinAustraliaBernardo Dominic NEW
Jefferson SchemmerFranceElwin Sharvill QUALIFIED
Costa DilliardFranceAmy Elsner RENEWAL
Izzy GarufiItalyBernardo Dominic RENEWAL
Chavez BriddickArgentinaAmy Elsner NEGOTIATION
Wickens NestleJapanAnna Fali QUALIFIED
Jefferson SchemmerRussiaXuxue Feng RENEWAL
Wickens NestleIndiaElwin Sharvill NEW
Jones VocelkaCanadaElwin Sharvill NEW
Clifford RimCanadaStephen Shaw NEGOTIATION
Ivar PaprockiSpainStephen Shaw QUALIFIED
Sinclair WaycottArgentinaIvan Magalhaes UNQUALIFIED
Izzy GarufiCanadaAmy Elsner NEW
Mayumi KolmetzBrazilIoni Bowcher PROPOSAL
Aika InouyeBrazilStephen Shaw NEW
Horizontal
NameCountryRepresentativeStatus
Silvio SlusarskiUnited KingdomIvan Magalhaes RENEWAL
Maria MarrierArgentinaIvan Magalhaes PROPOSAL
Clifford RimRussiaElwin Sharvill PROPOSAL
Emily WhobreyUnited KingdomAmy Elsner QUALIFIED
Mujtaba NickaUnited KingdomAnna Fali NEW
Julie StensethGermanyBernardo Dominic NEGOTIATION
Deepesh ChuiIndiaIvan Magalhaes NEGOTIATION
Claire TollnerAustraliaIoni Bowcher UNQUALIFIED
Chavez BriddickJapanStephen Shaw NEW
Murillo MaletGermanyIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Claire TollnerRussia2026-04-06Rousseaux, Michael Esq UNQUALIFIED71Anna Fali
1001Stacey MacleadSpain2026-04-02Dorl, James J Esq UNQUALIFIED71Stephen Shaw
1002Antonio CaudySpain2026-04-06Rousseaux, Michael Esq RENEWAL99Onyama Limba
1003Cody SaylorsRussia2026-04-12Dorl, James J Esq UNQUALIFIED55Xuxue Feng
1004Juan WieserFrance2026-03-27Chemel, James L Cpa NEGOTIATION86Asiya Javayant
1005Maisha RulapaughUnited Kingdom2026-04-08Chemel, James L Cpa NEW24Onyama Limba
1006Leja CaldareraCanada2026-03-28King, Christopher A Esq NEGOTIATION43Asiya Javayant
1007Johnson SergiFrance2026-04-09Printing Dimensions RENEWAL47Onyama Limba
1008Nicolas IturbideIndia2026-04-08Chanay, Jeffrey A Esq RENEWAL60Bernardo Dominic
1009Salvatore StockhamCanada2026-03-22Commercial Press NEGOTIATION21Bernardo Dominic
1010Mujtaba NickaGermany2026-04-03Chanay, Jeffrey A Esq NEW22Elwin Sharvill
1011Maria MarrierUnited Kingdom2026-03-20Benton, John B Jr NEW14Amy Elsner
1012Claire TollnerGermany2026-04-11Printing Dimensions NEGOTIATION54Elwin Sharvill
1013Silvio SlusarskiArgentina2026-04-17Morlong Associates QUALIFIED30Ioni Bowcher
1014Juan WieserItaly2026-03-28Printing Dimensions UNQUALIFIED62Ioni Bowcher
1015Greenwood BologniaFrance2026-03-28Feltz Printing Service UNQUALIFIED91Anna Fali
1016Mujtaba NickaCanada2026-04-02Rangoni Of Florence NEGOTIATION41Anna Fali
1017Aruna FigeroaJapan2026-04-03Chanay, Jeffrey A Esq RENEWAL85Onyama Limba
1018Jeanfrancois VenereJapan2026-04-13Chemel, James L Cpa NEGOTIATION74Stephen Shaw
1019Faith GillianSpain2026-04-08Rousseaux, Michael Esq NEW49Amy Elsner
1020Emily WhobreyJapan2026-04-01King, Christopher A Esq NEGOTIATION66Onyama Limba
1021Jones VocelkaSpain2026-04-13Rousseaux, Michael Esq UNQUALIFIED28Elwin Sharvill
1022Aditya KuskoAustralia2026-03-20Truhlar And Truhlar Attys RENEWAL7Ioni Bowcher
1023Kadeem FlosiRussia2026-03-20King, Christopher A Esq NEGOTIATION20Bernardo Dominic
1024Claire TollnerArgentina2026-03-25Rangoni Of Florence QUALIFIED16Elwin Sharvill
1025Stacey MacleadIndia2026-03-27Truhlar And Truhlar Attys QUALIFIED52Asiya Javayant
1026Costa DilliardFrance2026-03-30King, Christopher A Esq UNQUALIFIED92Anna Fali
1027Maisha RulapaughGermany2026-04-02Truhlar And Truhlar Attys PROPOSAL26Ivan Magalhaes
1028Alejandro PerinJapan2026-04-18Truhlar And Truhlar Attys UNQUALIFIED3Amy Elsner
1029Antonio CaudyArgentina2026-04-05Feltz Printing Service QUALIFIED51Xuxue Feng
1030Tony FollerCanada2026-03-31Printing Dimensions NEGOTIATION14Onyama Limba
1031Stacey MacleadJapan2026-04-09Chemel, James L Cpa QUALIFIED44Ivan Magalhaes
1032Jeanfrancois VenereSpain2026-04-04Chemel, James L Cpa UNQUALIFIED73Ivan Magalhaes
1033Munro FerenczIndia2026-04-01Chemel, James L Cpa NEW86Ioni Bowcher
1034Deepesh ChuiGermany2026-04-18Feltz Printing Service QUALIFIED82Ivan Magalhaes
1035Aditya KuskoUnited Kingdom2026-04-11Feltz Printing Service RENEWAL45Stephen Shaw
1036Maria MarrierGermany2026-04-18Chemel, James L Cpa UNQUALIFIED44Elwin Sharvill
1037Aditya KuskoGermany2026-03-31Chemel, James L Cpa RENEWAL91Amy Elsner
1038Maria MarrierAustralia2026-04-02Chanay, Jeffrey A Esq PROPOSAL16Elwin Sharvill
1039Munro FerenczIndia2026-04-09Chanay, Jeffrey A Esq NEW61Asiya Javayant
1040Ashley DoeRussia2026-03-21Chemel, James L Cpa QUALIFIED22Elwin Sharvill
1041Jefferson SchemmerArgentina2026-04-17Morlong Associates PROPOSAL79Ivan Magalhaes
1042Costa DilliardCanada2026-04-17Feltz Printing Service PROPOSAL62Anna Fali
1043Rodrigues CampainFrance2026-03-26Chapman, Ross E Esq QUALIFIED9Asiya Javayant
1044Aditya KuskoUnited Kingdom2026-04-08Rousseaux, Michael Esq NEW81Anna Fali
1045Emily WhobreyJapan2026-04-02Printing Dimensions PROPOSAL60Amy Elsner
1046Nicolas IturbideRussia2026-03-31Commercial Press PROPOSAL15Asiya Javayant
1047Mayumi KolmetzAustralia2026-03-29Rangoni Of Florence NEGOTIATION90Anna Fali
1048Ricardo GauchoUnited Kingdom2026-03-27Feltz Printing Service QUALIFIED52Anna Fali
1049Ashley DoeFrance2026-03-20Buckley Miller Wright QUALIFIED50Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Chavez BriddickAustraliaBernardo Dominic RENEWAL
Cody SaylorsIndiaAnna Fali NEGOTIATION
Jennifer AmigonRussiaAmy Elsner NEW
Maisha RulapaughFranceAmy Elsner PROPOSAL
Leon OldroydSpainIoni Bowcher PROPOSAL
Clifford RimRussiaBernardo Dominic NEW
Izzy GarufiIndiaAsiya Javayant UNQUALIFIED
Sinclair WaycottAustraliaOnyama Limba UNQUALIFIED
Murillo MaletFranceAsiya Javayant RENEWAL
Ricardo GauchoItalyOnyama Limba RENEWAL
Clifford RimSpainOnyama Limba UNQUALIFIED
Julie StensethBrazilBernardo Dominic RENEWAL
Nicolas IturbideArgentinaIoni Bowcher RENEWAL
Rodrigues CampainRussiaStephen Shaw UNQUALIFIED
Johnson SergiFranceAsiya Javayant PROPOSAL
Izzy GarufiGermanyAsiya Javayant QUALIFIED
Julie StensethRussiaBernardo Dominic UNQUALIFIED
Jennifer AmigonAustraliaStephen Shaw NEW
Chavez BriddickGermanyElwin Sharvill QUALIFIED
Maria MarrierIndiaXuxue Feng QUALIFIED
Darci PoquetteArgentinaStephen Shaw NEW
Johnson SergiFranceOnyama Limba PROPOSAL
David DarakjyGermanyIvan Magalhaes RENEWAL
Mayumi KolmetzBrazilIvan Magalhaes PROPOSAL
Claire TollnerFranceStephen Shaw PROPOSAL
Claire TollnerUnited KingdomIoni Bowcher NEGOTIATION
Smith GlickIndiaAnna Fali UNQUALIFIED
Leon OldroydGermanyElwin Sharvill RENEWAL
Nicolas IturbideGermanyStephen Shaw NEW
Ashley DoeFranceAmy Elsner NEW
Juan WieserJapanElwin Sharvill PROPOSAL
Aditya KuskoRussiaElwin Sharvill NEW
Julie StensethAustraliaIoni Bowcher NEW
Clifford RimBrazilAmy Elsner UNQUALIFIED
Jones VocelkaGermanyIvan Magalhaes NEW
Arvin AlbaresCanadaStephen Shaw NEGOTIATION
Tony FollerAustraliaAnna Fali RENEWAL
Mayumi KolmetzIndiaOnyama Limba NEGOTIATION
Nicolas IturbideUnited KingdomOnyama Limba UNQUALIFIED
Ricardo GauchoJapanIvan Magalhaes RENEWAL
Costa DilliardUnited KingdomElwin Sharvill RENEWAL
Octavia MaletBrazilAsiya Javayant QUALIFIED
Silvio SlusarskiUnited KingdomIvan Magalhaes NEGOTIATION
Tony FollerUnited KingdomStephen Shaw QUALIFIED
Munro FerenczFranceXuxue Feng RENEWAL
James ButtBrazilIoni Bowcher RENEWAL
Chavez BriddickAustraliaXuxue Feng QUALIFIED
David DarakjyAustraliaIvan Magalhaes UNQUALIFIED
Greenwood BologniaArgentinaAnna Fali UNQUALIFIED
Juan WieserCanadaAsiya Javayant NEGOTIATION
Frozen Columns
Name
Leon Oldroyd
Clifford Rim
Salvatore Stockham
Julie Stenseth
Aruna Figeroa
Leja Caldarera
Octavia Malet
Munro Ferencz
Arvin Albares
Chavez Briddick
Kadeem Flosi
Aditya Kusko
Francesco Shinko
Chavez Briddick
Jones Vocelka
Costa Dilliard
Aditya Kusko
Kadeem Flosi
Ivar Paprocki
Faith Gillian
Clifford Rim
Ivar Paprocki
Izzy Garufi
Kaitlin Ostrosky
Tony Foller
Sinclair Waycott
Juan Wieser
Costa Dilliard
Ashley Doe
Ashley Doe
Clifford Rim
Claire Tollner
Johnson Sergi
Murillo Malet
Greenwood Bolognia
Leja Caldarera
Maria Marrier
Arvin Albares
Adams Morasca
Francesco Shinko
Aruna Figeroa
Aditya Kusko
Jefferson Schemmer
James Butt
Darci Poquette
Mujtaba Nicka
Francesco Shinko
Mujtaba Nicka
Maisha Rulapaugh
Wickens Nestle
IdCountryDate
1000Argentina2026-04-04
1001Canada2026-04-03
1002Australia2026-04-06
1003Russia2026-04-14
1004Japan2026-04-09
1005India2026-03-31
1006Argentina2026-03-27
1007Spain2026-03-20
1008United Kingdom2026-04-08
1009Australia2026-04-17
1010Spain2026-04-08
1011Japan2026-04-08
1012Japan2026-04-17
1013France2026-04-02
1014India2026-03-28
1015Spain2026-04-01
1016Argentina2026-04-09
1017France2026-03-23
1018Russia2026-04-05
1019Australia2026-03-27
1020Australia2026-03-27
1021France2026-03-23
1022France2026-04-10
1023Australia2026-04-08
1024Japan2026-04-15
1025Germany2026-03-25
1026Japan2026-04-02
1027Brazil2026-03-31
1028Italy2026-04-05
1029Russia2026-04-15
1030Russia2026-03-29
1031Russia2026-04-08
1032Italy2026-04-12
1033Australia2026-04-04
1034Canada2026-04-15
1035India2026-03-24
1036Japan2026-03-25
1037France2026-04-06
1038Australia2026-03-29
1039Spain2026-04-15
1040Japan2026-03-27
1041Russia2026-03-31
1042India2026-04-14
1043France2026-03-29
1044Spain2026-03-31
1045Germany2026-04-03
1046Germany2026-04-12
1047Canada2026-04-10
1048Spain2026-04-04
1049Argentina2026-04-06

On-Demand Data

NameIdCountryDate
Arvin Albares1000Brazil2026-04-06
Munro Ferencz1001Germany2026-04-16
Morrow Ruta1002Japan2026-04-02
Julie Stenseth1003Japan2026-04-03
Morrow Ruta1004Argentina2026-03-20
Aruna Figeroa1005India2026-04-05
Antonio Caudy1006Brazil2026-03-20
Costa Dilliard1007Japan2026-03-23
Salvatore Stockham1008India2026-04-16
Aditya Kusko1009Canada2026-04-13
Wickens Nestle1010Italy2026-04-01
Morrow Ruta1011Russia2026-03-26
Francesco Shinko1012Italy2026-03-21
Adams Morasca1013Italy2026-04-12
Greenwood Bolognia1014Germany2026-04-06
Claire Tollner1015Russia2026-03-21
Maisha Rulapaugh1016Russia2026-03-31
Mujtaba Nicka1017United Kingdom2026-04-13
Faith Gillian1018Argentina2026-03-31
James Butt1019Germany2026-03-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow RutaJapanXuxue Feng QUALIFIED
Jones VocelkaItalyIoni Bowcher PROPOSAL
Aditya KuskoFranceIvan Magalhaes PROPOSAL
Leon OldroydArgentinaIoni Bowcher PROPOSAL
Juan WieserUnited KingdomAnna Fali NEW
Faith GillianAustraliaXuxue Feng QUALIFIED
Izzy GarufiIndiaElwin Sharvill NEW
Ricardo GauchoSpainAmy Elsner NEGOTIATION
Wickens NestleFranceIvan Magalhaes NEGOTIATION
Aditya KuskoArgentinaAmy Elsner UNQUALIFIED
Rodrigues CampainCanadaAnna Fali NEGOTIATION
Ashley DoeIndiaElwin Sharvill NEGOTIATION
Jefferson SchemmerUnited KingdomElwin Sharvill QUALIFIED
Jones VocelkaSpainIvan Magalhaes UNQUALIFIED
Ivar PaprockiSpainAmy Elsner UNQUALIFIED
Morrow RutaCanadaAnna Fali UNQUALIFIED
Darci PoquetteItalyOnyama Limba QUALIFIED
Morrow RutaRussiaAnna Fali RENEWAL
Wickens NestleIndiaStephen Shaw NEW
Adams MorascaRussiaAsiya Javayant PROPOSAL
Ivar PaprockiRussiaStephen Shaw PROPOSAL
Clifford RimAustraliaAsiya Javayant NEW
Smith GlickBrazilAsiya Javayant QUALIFIED
Leon OldroydUnited KingdomBernardo Dominic PROPOSAL
Silvio SlusarskiItalyOnyama Limba RENEWAL
Misaki RoysterUnited KingdomElwin Sharvill RENEWAL
David DarakjyCanadaXuxue Feng PROPOSAL
Juan WieserCanadaStephen Shaw PROPOSAL
Antonio CaudyIndiaElwin Sharvill PROPOSAL
Ricardo GauchoGermanyElwin Sharvill RENEWAL
Ivar PaprockiBrazilStephen Shaw UNQUALIFIED
Tony FollerFranceAmy Elsner PROPOSAL
Emily WhobreySpainXuxue Feng QUALIFIED
Leja CaldareraJapanAsiya Javayant PROPOSAL
Aruna FigeroaIndiaElwin Sharvill NEGOTIATION
Emily WhobreySpainIoni Bowcher NEGOTIATION
James ButtAustraliaAnna Fali RENEWAL
Adams MorascaJapanIoni Bowcher NEGOTIATION
Mayumi KolmetzArgentinaStephen Shaw NEW
Antonio CaudyCanadaOnyama Limba RENEWAL

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