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
Faith GillianRussiaIoni Bowcher RENEWAL
Wickens NestleUnited KingdomElwin Sharvill PROPOSAL
Maria MarrierItalyAsiya Javayant NEGOTIATION
Greenwood BologniaRussiaAnna Fali UNQUALIFIED
Jeanfrancois VenereBrazilElwin Sharvill PROPOSAL
Kadeem FlosiBrazilAmy Elsner RENEWAL
Aruna FigeroaUnited KingdomIoni Bowcher RENEWAL
Chavez BriddickAustraliaAnna Fali UNQUALIFIED
Jennifer AmigonIndiaAnna Fali UNQUALIFIED
Nicolas IturbideSpainIoni Bowcher NEGOTIATION
Leon OldroydGermanyIoni Bowcher PROPOSAL
Darci PoquetteJapanIoni Bowcher NEGOTIATION
Jennifer AmigonItalyOnyama Limba QUALIFIED
Cody SaylorsJapanBernardo Dominic UNQUALIFIED
Ivar PaprockiArgentinaXuxue Feng NEGOTIATION
Adams MorascaArgentinaIoni Bowcher NEW
Costa DilliardArgentinaStephen Shaw NEGOTIATION
Munro FerenczSpainElwin Sharvill UNQUALIFIED
Darci PoquetteBrazilXuxue Feng RENEWAL
Rodrigues CampainItalyXuxue Feng NEGOTIATION
Silvio SlusarskiAustraliaStephen Shaw PROPOSAL
Johnson SergiSpainAnna Fali PROPOSAL
Leja CaldareraBrazilAsiya Javayant RENEWAL
Leja CaldareraJapanXuxue Feng NEGOTIATION
Smith GlickIndiaIoni Bowcher RENEWAL
Mujtaba NickaIndiaXuxue Feng NEGOTIATION
James ButtArgentinaStephen Shaw NEGOTIATION
Juan WieserUnited KingdomAnna Fali RENEWAL
Jefferson SchemmerJapanStephen Shaw PROPOSAL
Maria MarrierBrazilBernardo Dominic NEW
Misaki RoysterSpainAmy Elsner UNQUALIFIED
Silvio SlusarskiRussiaAmy Elsner QUALIFIED
Cody SaylorsFranceAsiya Javayant NEGOTIATION
Mayumi KolmetzJapanAsiya Javayant PROPOSAL
Maria MarrierUnited KingdomIoni Bowcher NEGOTIATION
Emily WhobreyArgentinaAsiya Javayant PROPOSAL
Chavez BriddickGermanyOnyama Limba QUALIFIED
Mujtaba NickaCanadaStephen Shaw NEW
Octavia MaletGermanyAsiya Javayant NEGOTIATION
Chavez BriddickSpainElwin Sharvill PROPOSAL
Ivar PaprockiGermanyXuxue Feng QUALIFIED
Adams MorascaGermanyStephen Shaw NEW
Jefferson SchemmerCanadaOnyama Limba UNQUALIFIED
Cody SaylorsItalyIoni Bowcher PROPOSAL
Munro FerenczSpainBernardo Dominic UNQUALIFIED
Nicolas IturbideItalyXuxue Feng NEGOTIATION
David DarakjyCanadaAnna Fali NEGOTIATION
Leja CaldareraGermanyIvan Magalhaes RENEWAL
Alejandro PerinFranceOnyama Limba UNQUALIFIED
Darci PoquetteRussiaIvan Magalhaes QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Munro FerenczUnited KingdomXuxue Feng RENEWAL
Antonio CaudyFranceElwin Sharvill QUALIFIED
Ivar PaprockiArgentinaElwin Sharvill NEW
Mayumi KolmetzRussiaIoni Bowcher QUALIFIED
Aruna FigeroaBrazilAmy Elsner QUALIFIED
Mujtaba NickaCanadaOnyama Limba QUALIFIED
Jones VocelkaGermanyBernardo Dominic PROPOSAL
Cody SaylorsCanadaXuxue Feng RENEWAL
Leja CaldareraCanadaElwin Sharvill NEGOTIATION
Izzy GarufiSpainBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydBrazil2026-06-09Commercial Press QUALIFIED99Asiya Javayant
1001Johnson SergiGermany2026-06-18Morlong Associates PROPOSAL7Amy Elsner
1002Juan WieserFrance2026-05-26King, Christopher A Esq UNQUALIFIED86Ivan Magalhaes
1003Clifford RimSpain2026-05-25Rousseaux, Michael Esq QUALIFIED9Amy Elsner
1004Adams MorascaJapan2026-06-12Rousseaux, Michael Esq QUALIFIED6Onyama Limba
1005Johnson SergiUnited Kingdom2026-05-21Benton, John B Jr QUALIFIED70Bernardo Dominic
1006Francesco ShinkoGermany2026-06-19King, Christopher A Esq NEW59Onyama Limba
1007Costa DilliardRussia2026-06-13Rousseaux, Michael Esq PROPOSAL60Onyama Limba
1008Isabel BowleyRussia2026-06-07King, Christopher A Esq NEW26Ivan Magalhaes
1009Aika InouyeSpain2026-05-31Rousseaux, Michael Esq RENEWAL90Amy Elsner
1010Smith GlickBrazil2026-06-07Chapman, Ross E Esq QUALIFIED22Asiya Javayant
1011Julie StensethItaly2026-06-04King, Christopher A Esq UNQUALIFIED32Ivan Magalhaes
1012Sinclair WaycottAustralia2026-05-31Benton, John B Jr NEW77Xuxue Feng
1013Arvin AlbaresAustralia2026-05-23Chanay, Jeffrey A Esq RENEWAL26Ivan Magalhaes
1014Aditya KuskoSpain2026-06-11Feltz Printing Service QUALIFIED35Anna Fali
1015Kadeem FlosiRussia2026-05-24Benton, John B Jr RENEWAL71Xuxue Feng
1016Tony FollerBrazil2026-05-25King, Christopher A Esq QUALIFIED90Ioni Bowcher
1017Mayumi KolmetzFrance2026-06-13Rangoni Of Florence QUALIFIED95Ivan Magalhaes
1018Izzy GarufiUnited Kingdom2026-06-07Commercial Press RENEWAL42Elwin Sharvill
1019Faith GillianIndia2026-05-24Buckley Miller Wright QUALIFIED49Asiya Javayant
1020Leon OldroydArgentina2026-06-04Commercial Press RENEWAL86Onyama Limba
1021Nicolas IturbideUnited Kingdom2026-06-15Dorl, James J Esq NEW45Elwin Sharvill
1022Misaki RoysterUnited Kingdom2026-05-30Rousseaux, Michael Esq RENEWAL74Bernardo Dominic
1023Jeanfrancois VenereGermany2026-05-21Morlong Associates UNQUALIFIED9Amy Elsner
1024Costa DilliardAustralia2026-06-02King, Christopher A Esq PROPOSAL62Asiya Javayant
1025Chavez BriddickBrazil2026-06-10King, Christopher A Esq UNQUALIFIED47Ivan Magalhaes
1026Johnson SergiArgentina2026-05-25Feltz Printing Service NEW59Anna Fali
1027Kaitlin OstroskyBrazil2026-05-27Feiner Bros PROPOSAL0Elwin Sharvill
1028Jones VocelkaFrance2026-06-06Benton, John B Jr UNQUALIFIED75Elwin Sharvill
1029Munro FerenczArgentina2026-06-15Truhlar And Truhlar Attys QUALIFIED66Onyama Limba
1030Aditya KuskoUnited Kingdom2026-06-12Rousseaux, Michael Esq QUALIFIED93Anna Fali
1031Cody SaylorsItaly2026-05-25Benton, John B Jr PROPOSAL88Bernardo Dominic
1032Emily WhobreyUnited Kingdom2026-05-27Dorl, James J Esq QUALIFIED99Ioni Bowcher
1033Stacey MacleadRussia2026-06-07Feltz Printing Service QUALIFIED94Bernardo Dominic
1034Jennifer AmigonRussia2026-06-18Benton, John B Jr QUALIFIED47Elwin Sharvill
1035Cody SaylorsRussia2026-06-09Feltz Printing Service NEGOTIATION4Asiya Javayant
1036Octavia MaletItaly2026-06-11Rousseaux, Michael Esq RENEWAL69Asiya Javayant
1037Aruna FigeroaJapan2026-05-29Chemel, James L Cpa PROPOSAL10Xuxue Feng
1038Aruna FigeroaJapan2026-05-21Truhlar And Truhlar Attys NEGOTIATION79Anna Fali
1039Juan WieserAustralia2026-06-14King, Christopher A Esq PROPOSAL23Ioni Bowcher
1040Cody SaylorsArgentina2026-06-08Feltz Printing Service PROPOSAL50Onyama Limba
1041Maria MarrierUnited Kingdom2026-05-29Rousseaux, Michael Esq NEGOTIATION43Stephen Shaw
1042Leja CaldareraJapan2026-06-09Commercial Press NEW15Ioni Bowcher
1043Ricardo GauchoRussia2026-06-14Dorl, James J Esq NEW78Stephen Shaw
1044Ivar PaprockiFrance2026-06-05Dorl, James J Esq RENEWAL78Xuxue Feng
1045Silvio SlusarskiIndia2026-06-17Chemel, James L Cpa PROPOSAL87Ioni Bowcher
1046Clifford RimGermany2026-06-03Morlong Associates UNQUALIFIED99Stephen Shaw
1047Ivar PaprockiSpain2026-06-15Buckley Miller Wright UNQUALIFIED12Asiya Javayant
1048Greenwood BologniaArgentina2026-06-19Chapman, Ross E Esq NEGOTIATION9Ivan Magalhaes
1049Deepesh ChuiUnited Kingdom2026-06-02Dorl, James J Esq NEW71Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Nicolas IturbideArgentinaXuxue Feng RENEWAL
Ricardo GauchoAustraliaElwin Sharvill RENEWAL
Morrow RutaBrazilBernardo Dominic PROPOSAL
Leon OldroydJapanXuxue Feng NEGOTIATION
Salvatore StockhamRussiaIvan Magalhaes RENEWAL
Leon OldroydAustraliaStephen Shaw UNQUALIFIED
Juan WieserGermanyIvan Magalhaes RENEWAL
Ricardo GauchoArgentinaStephen Shaw QUALIFIED
Julie StensethIndiaIvan Magalhaes NEW
Kaitlin OstroskyCanadaIoni Bowcher NEW
Octavia MaletIndiaAsiya Javayant QUALIFIED
Jeanfrancois VenereSpainElwin Sharvill NEW
Aika InouyeIndiaIvan Magalhaes NEW
James ButtArgentinaOnyama Limba NEW
Arvin AlbaresFranceIvan Magalhaes RENEWAL
Rodrigues CampainSpainAmy Elsner PROPOSAL
Misaki RoysterGermanyOnyama Limba RENEWAL
Smith GlickAustraliaXuxue Feng QUALIFIED
Francesco ShinkoAustraliaStephen Shaw QUALIFIED
Aditya KuskoGermanyAsiya Javayant PROPOSAL
Johnson SergiAustraliaBernardo Dominic NEW
Misaki RoysterRussiaOnyama Limba RENEWAL
Misaki RoysterItalyAnna Fali UNQUALIFIED
Deepesh ChuiIndiaAmy Elsner NEW
Mayumi KolmetzAustraliaElwin Sharvill NEGOTIATION
Izzy GarufiJapanBernardo Dominic NEW
Cody SaylorsIndiaOnyama Limba RENEWAL
Maisha RulapaughItalyAsiya Javayant PROPOSAL
Mayumi KolmetzJapanAnna Fali RENEWAL
James ButtIndiaAnna Fali NEW
Maisha RulapaughIndiaXuxue Feng NEW
Stacey MacleadJapanAnna Fali PROPOSAL
Maria MarrierItalyIoni Bowcher NEGOTIATION
Ashley DoeArgentinaAnna Fali NEW
Aika InouyeCanadaAmy Elsner PROPOSAL
Chavez BriddickIndiaXuxue Feng NEGOTIATION
Wickens NestleSpainIoni Bowcher NEW
Leon OldroydCanadaAnna Fali PROPOSAL
Jeanfrancois VenereArgentinaElwin Sharvill PROPOSAL
Jones VocelkaRussiaXuxue Feng QUALIFIED
Antonio CaudyJapanXuxue Feng NEW
Sinclair WaycottArgentinaXuxue Feng RENEWAL
Juan WieserSpainStephen Shaw UNQUALIFIED
Nicolas IturbideSpainStephen Shaw UNQUALIFIED
Antonio CaudyRussiaElwin Sharvill PROPOSAL
Maisha RulapaughBrazilAmy Elsner PROPOSAL
Antonio CaudySpainAnna Fali NEW
Smith GlickArgentinaXuxue Feng RENEWAL
Johnson SergiAustraliaIvan Magalhaes NEGOTIATION
Deepesh ChuiRussiaAnna Fali NEGOTIATION
Frozen Columns
Name
Kadeem Flosi
Cody Saylors
Antonio Caudy
Kaitlin Ostrosky
Juan Wieser
Leja Caldarera
Aditya Kusko
Isabel Bowley
Sinclair Waycott
Kadeem Flosi
Morrow Ruta
David Darakjy
Maisha Rulapaugh
Deepesh Chui
Misaki Royster
Arvin Albares
Rodrigues Campain
Jennifer Amigon
Aruna Figeroa
Wickens Nestle
Aditya Kusko
Ivar Paprocki
Kaitlin Ostrosky
Clifford Rim
Clifford Rim
Sinclair Waycott
Clifford Rim
Wickens Nestle
Smith Glick
Ivar Paprocki
Kadeem Flosi
Francesco Shinko
David Darakjy
Clifford Rim
Arvin Albares
Greenwood Bolognia
Morrow Ruta
Maisha Rulapaugh
Misaki Royster
Greenwood Bolognia
Darci Poquette
Jennifer Amigon
Salvatore Stockham
Salvatore Stockham
Ivar Paprocki
Izzy Garufi
Deepesh Chui
Isabel Bowley
Jeanfrancois Venere
Juan Wieser
IdCountryDate
1000Australia2026-06-13
1001India2026-06-15
1002Russia2026-06-14
1003Brazil2026-05-27
1004Canada2026-06-02
1005Japan2026-05-28
1006Spain2026-05-26
1007Russia2026-06-08
1008Italy2026-06-17
1009Canada2026-06-09
1010India2026-05-25
1011India2026-06-03
1012Germany2026-06-09
1013France2026-05-29
1014France2026-05-21
1015Italy2026-05-23
1016United Kingdom2026-05-21
1017Brazil2026-05-30
1018Australia2026-05-27
1019United Kingdom2026-05-27
1020Brazil2026-05-26
1021Argentina2026-06-02
1022Canada2026-06-11
1023Germany2026-06-10
1024Australia2026-06-14
1025Italy2026-06-03
1026Spain2026-06-15
1027Australia2026-05-27
1028Russia2026-06-04
1029Argentina2026-05-23
1030Canada2026-06-04
1031Japan2026-05-30
1032Spain2026-06-05
1033India2026-05-27
1034Australia2026-05-28
1035Russia2026-05-28
1036Germany2026-06-07
1037Australia2026-05-26
1038India2026-06-19
1039Brazil2026-05-26
1040Japan2026-05-24
1041India2026-06-17
1042United Kingdom2026-06-14
1043India2026-06-14
1044United Kingdom2026-05-25
1045France2026-05-27
1046Japan2026-06-06
1047Australia2026-06-07
1048Italy2026-06-09
1049United Kingdom2026-06-05

On-Demand Data

NameIdCountryDate
Aditya Kusko1000Canada2026-06-14
Deepesh Chui1001Germany2026-05-26
David Darakjy1002Spain2026-06-01
Clifford Rim1003India2026-06-19
Costa Dilliard1004Argentina2026-05-29
Rodrigues Campain1005Argentina2026-06-13
Johnson Sergi1006United Kingdom2026-05-25
Mujtaba Nicka1007Japan2026-05-29
Leja Caldarera1008Japan2026-05-26
Aika Inouye1009Germany2026-06-06
Ivar Paprocki1010France2026-06-15
Izzy Garufi1011Argentina2026-06-17
Mayumi Kolmetz1012Germany2026-06-19
Kaitlin Ostrosky1013Russia2026-06-04
Leon Oldroyd1014Russia2026-06-12
Julie Stenseth1015Brazil2026-06-09
Adams Morasca1016France2026-06-09
Jones Vocelka1017Italy2026-06-12
Ivar Paprocki1018Argentina2026-06-17
Aika Inouye1019Brazil2026-06-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin AlbaresArgentinaAsiya Javayant NEGOTIATION
Jones VocelkaRussiaBernardo Dominic NEGOTIATION
Mayumi KolmetzCanadaBernardo Dominic RENEWAL
Smith GlickSpainIvan Magalhaes NEGOTIATION
Kadeem FlosiRussiaStephen Shaw NEGOTIATION
Greenwood BologniaSpainStephen Shaw QUALIFIED
Deepesh ChuiSpainAmy Elsner PROPOSAL
Nicolas IturbideArgentinaAsiya Javayant QUALIFIED
Nicolas IturbideSpainBernardo Dominic QUALIFIED
Morrow RutaJapanIoni Bowcher NEW
David DarakjyItalyAsiya Javayant UNQUALIFIED
Maria MarrierUnited KingdomXuxue Feng UNQUALIFIED
Emily WhobreyCanadaAsiya Javayant PROPOSAL
Misaki RoysterUnited KingdomAnna Fali NEGOTIATION
Silvio SlusarskiItalyBernardo Dominic RENEWAL
Clifford RimGermanyOnyama Limba QUALIFIED
Leon OldroydItalyAsiya Javayant PROPOSAL
Adams MorascaIndiaXuxue Feng UNQUALIFIED
Salvatore StockhamArgentinaIoni Bowcher NEW
Wickens NestleCanadaAnna Fali RENEWAL
Tony FollerAustraliaElwin Sharvill PROPOSAL
Kaitlin OstroskyItalyBernardo Dominic PROPOSAL
Leon OldroydFranceElwin Sharvill NEGOTIATION
Ivar PaprockiFranceAsiya Javayant NEW
Izzy GarufiItalyAsiya Javayant QUALIFIED
Leon OldroydItalyBernardo Dominic NEGOTIATION
Clifford RimFranceIoni Bowcher NEW
Stacey MacleadSpainAmy Elsner RENEWAL
Faith GillianRussiaOnyama Limba RENEWAL
Ivar PaprockiFranceIvan Magalhaes NEW
Kadeem FlosiSpainStephen Shaw UNQUALIFIED
Wickens NestleBrazilOnyama Limba RENEWAL
Nicolas IturbideAustraliaAmy Elsner UNQUALIFIED
Izzy GarufiCanadaAmy Elsner RENEWAL
Chavez BriddickJapanIoni Bowcher RENEWAL
Emily WhobreyCanadaElwin Sharvill PROPOSAL
Chavez BriddickBrazilAsiya Javayant PROPOSAL
Kaitlin OstroskyJapanAsiya Javayant UNQUALIFIED
James ButtJapanIoni Bowcher NEGOTIATION
Salvatore StockhamBrazilIvan Magalhaes UNQUALIFIED

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