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
Maria MarrierIndiaAsiya Javayant QUALIFIED
Ivar PaprockiGermanyAmy Elsner PROPOSAL
Munro FerenczSpainXuxue Feng PROPOSAL
Costa DilliardGermanyIvan Magalhaes QUALIFIED
Arvin AlbaresArgentinaStephen Shaw PROPOSAL
Faith GillianUnited KingdomIvan Magalhaes RENEWAL
Mayumi KolmetzArgentinaXuxue Feng PROPOSAL
Aruna FigeroaAustraliaIoni Bowcher NEW
Francesco ShinkoSpainStephen Shaw UNQUALIFIED
Darci PoquetteRussiaAmy Elsner RENEWAL
Jennifer AmigonAustraliaAnna Fali UNQUALIFIED
Clifford RimItalyIoni Bowcher NEW
Emily WhobreyIndiaIvan Magalhaes NEW
Ivar PaprockiUnited KingdomElwin Sharvill QUALIFIED
Clifford RimUnited KingdomIvan Magalhaes RENEWAL
Nicolas IturbideIndiaAnna Fali UNQUALIFIED
Costa DilliardArgentinaBernardo Dominic QUALIFIED
Ashley DoeRussiaXuxue Feng UNQUALIFIED
Aika InouyeGermanyElwin Sharvill QUALIFIED
Munro FerenczJapanAmy Elsner UNQUALIFIED
Faith GillianItalyXuxue Feng PROPOSAL
Clifford RimUnited KingdomXuxue Feng QUALIFIED
Jennifer AmigonArgentinaXuxue Feng NEW
Cody SaylorsItalyStephen Shaw QUALIFIED
Salvatore StockhamArgentinaBernardo Dominic NEW
Antonio CaudyUnited KingdomIvan Magalhaes RENEWAL
Costa DilliardItalyIoni Bowcher RENEWAL
Emily WhobreyUnited KingdomAmy Elsner NEW
Aruna FigeroaIndiaIoni Bowcher QUALIFIED
Greenwood BologniaCanadaIvan Magalhaes PROPOSAL
Darci PoquetteSpainAnna Fali UNQUALIFIED
Ashley DoeFranceIvan Magalhaes QUALIFIED
Octavia MaletCanadaBernardo Dominic PROPOSAL
Rodrigues CampainBrazilStephen Shaw UNQUALIFIED
Antonio CaudyFranceAnna Fali UNQUALIFIED
Octavia MaletAustraliaXuxue Feng NEW
Juan WieserAustraliaIvan Magalhaes QUALIFIED
Claire TollnerIndiaOnyama Limba UNQUALIFIED
Greenwood BologniaAustraliaXuxue Feng PROPOSAL
Isabel BowleyIndiaXuxue Feng NEW
Isabel BowleyIndiaBernardo Dominic QUALIFIED
Maria MarrierAustraliaOnyama Limba UNQUALIFIED
Sinclair WaycottAustraliaXuxue Feng NEW
Claire TollnerArgentinaBernardo Dominic QUALIFIED
Jefferson SchemmerBrazilIvan Magalhaes UNQUALIFIED
Kadeem FlosiFranceOnyama Limba UNQUALIFIED
Jones VocelkaArgentinaIvan Magalhaes UNQUALIFIED
Chavez BriddickArgentinaStephen Shaw PROPOSAL
Arvin AlbaresIndiaAsiya Javayant PROPOSAL
Octavia MaletBrazilXuxue Feng QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Sinclair WaycottCanadaBernardo Dominic PROPOSAL
Francesco ShinkoCanadaAmy Elsner QUALIFIED
Aika InouyeAustraliaAmy Elsner PROPOSAL
Morrow RutaCanadaOnyama Limba QUALIFIED
Adams MorascaJapanAmy Elsner RENEWAL
Jennifer AmigonBrazilElwin Sharvill QUALIFIED
Aika InouyeGermanyAsiya Javayant NEW
Aruna FigeroaRussiaIvan Magalhaes QUALIFIED
Mayumi KolmetzUnited KingdomIvan Magalhaes RENEWAL
Octavia MaletBrazilIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Salvatore StockhamSpain2026-05-26Commercial Press UNQUALIFIED13Bernardo Dominic
1001Emily WhobreyGermany2026-06-06Feiner Bros QUALIFIED4Asiya Javayant
1002Munro FerenczUnited Kingdom2026-05-27Printing Dimensions NEW67Anna Fali
1003Faith GillianItaly2026-05-15Buckley Miller Wright NEW7Asiya Javayant
1004Adams MorascaUnited Kingdom2026-05-30Rangoni Of Florence RENEWAL94Ioni Bowcher
1005Antonio CaudyRussia2026-05-19Chemel, James L Cpa PROPOSAL94Onyama Limba
1006Leon OldroydAustralia2026-05-25Truhlar And Truhlar Attys QUALIFIED9Asiya Javayant
1007Kadeem FlosiFrance2026-05-14Feiner Bros RENEWAL30Anna Fali
1008Adams MorascaUnited Kingdom2026-05-20Truhlar And Truhlar Attys RENEWAL70Elwin Sharvill
1009Greenwood BologniaRussia2026-06-10Feltz Printing Service NEW29Anna Fali
1010Johnson SergiAustralia2026-06-05Feiner Bros PROPOSAL47Anna Fali
1011Clifford RimBrazil2026-05-20Benton, John B Jr PROPOSAL85Amy Elsner
1012Francesco ShinkoItaly2026-06-12Chapman, Ross E Esq PROPOSAL53Xuxue Feng
1013Rodrigues CampainArgentina2026-06-05Dorl, James J Esq NEGOTIATION64Elwin Sharvill
1014Julie StensethAustralia2026-05-17Buckley Miller Wright UNQUALIFIED53Ioni Bowcher
1015Munro FerenczBrazil2026-06-05Rangoni Of Florence PROPOSAL57Stephen Shaw
1016Sinclair WaycottBrazil2026-05-14Rousseaux, Michael Esq PROPOSAL13Amy Elsner
1017Cody SaylorsJapan2026-06-10Chapman, Ross E Esq PROPOSAL71Anna Fali
1018Costa DilliardItaly2026-05-30King, Christopher A Esq QUALIFIED94Asiya Javayant
1019Tony FollerFrance2026-06-01Morlong Associates QUALIFIED0Amy Elsner
1020Alejandro PerinUnited Kingdom2026-06-01Rangoni Of Florence NEGOTIATION15Anna Fali
1021Mayumi KolmetzIndia2026-06-09Chapman, Ross E Esq NEGOTIATION85Bernardo Dominic
1022Maria MarrierSpain2026-06-03Chanay, Jeffrey A Esq RENEWAL92Asiya Javayant
1023Alejandro PerinGermany2026-06-08Morlong Associates QUALIFIED9Xuxue Feng
1024Jones VocelkaArgentina2026-05-29Printing Dimensions QUALIFIED85Stephen Shaw
1025Stacey MacleadArgentina2026-06-11Rousseaux, Michael Esq PROPOSAL51Ioni Bowcher
1026Stacey MacleadUnited Kingdom2026-05-14Printing Dimensions QUALIFIED0Bernardo Dominic
1027Leja CaldareraCanada2026-05-27Truhlar And Truhlar Attys NEGOTIATION62Amy Elsner
1028Smith GlickGermany2026-05-26Morlong Associates RENEWAL82Bernardo Dominic
1029Leon OldroydFrance2026-06-02Chanay, Jeffrey A Esq RENEWAL98Amy Elsner
1030Leon OldroydAustralia2026-06-11Benton, John B Jr PROPOSAL98Ivan Magalhaes
1031Darci PoquetteIndia2026-06-01Chapman, Ross E Esq RENEWAL83Xuxue Feng
1032Faith GillianSpain2026-06-04Chanay, Jeffrey A Esq PROPOSAL4Amy Elsner
1033Chavez BriddickSpain2026-05-14Dorl, James J Esq NEGOTIATION24Ivan Magalhaes
1034Greenwood BologniaCanada2026-06-11Chapman, Ross E Esq QUALIFIED67Elwin Sharvill
1035Aika InouyeAustralia2026-05-28Benton, John B Jr NEW17Amy Elsner
1036Mayumi KolmetzBrazil2026-05-21Truhlar And Truhlar Attys PROPOSAL26Anna Fali
1037Kadeem FlosiFrance2026-05-19Feiner Bros NEGOTIATION50Asiya Javayant
1038Francesco ShinkoItaly2026-05-30King, Christopher A Esq UNQUALIFIED82Ivan Magalhaes
1039Kaitlin OstroskyFrance2026-06-12King, Christopher A Esq NEGOTIATION54Onyama Limba
1040Claire TollnerUnited Kingdom2026-05-22Commercial Press QUALIFIED58Stephen Shaw
1041Salvatore StockhamGermany2026-06-07Chemel, James L Cpa QUALIFIED17Anna Fali
1042James ButtRussia2026-05-17Dorl, James J Esq UNQUALIFIED71Asiya Javayant
1043Murillo MaletBrazil2026-05-23Printing Dimensions UNQUALIFIED29Bernardo Dominic
1044Clifford RimItaly2026-06-10Feiner Bros RENEWAL93Anna Fali
1045Leon OldroydRussia2026-05-23Chapman, Ross E Esq UNQUALIFIED15Elwin Sharvill
1046Sinclair WaycottAustralia2026-05-23Benton, John B Jr NEGOTIATION79Onyama Limba
1047David DarakjySpain2026-05-31Commercial Press NEGOTIATION26Stephen Shaw
1048Jefferson SchemmerJapan2026-06-06Rousseaux, Michael Esq NEW76Anna Fali
1049Mayumi KolmetzJapan2026-05-31Dorl, James J Esq PROPOSAL9Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Murillo MaletArgentinaStephen Shaw QUALIFIED
Francesco ShinkoAustraliaAmy Elsner NEW
Jefferson SchemmerJapanAnna Fali NEGOTIATION
Chavez BriddickSpainAsiya Javayant PROPOSAL
Ricardo GauchoIndiaStephen Shaw RENEWAL
Mayumi KolmetzJapanXuxue Feng NEW
Rodrigues CampainBrazilBernardo Dominic NEW
Misaki RoysterBrazilAmy Elsner NEW
Alejandro PerinUnited KingdomOnyama Limba NEGOTIATION
Juan WieserGermanyXuxue Feng PROPOSAL
Clifford RimItalyAsiya Javayant NEGOTIATION
Sinclair WaycottSpainXuxue Feng RENEWAL
Salvatore StockhamGermanyAmy Elsner NEGOTIATION
Maria MarrierBrazilOnyama Limba NEW
Juan WieserUnited KingdomAsiya Javayant RENEWAL
Mujtaba NickaCanadaAsiya Javayant QUALIFIED
Silvio SlusarskiFranceOnyama Limba PROPOSAL
Ashley DoeItalyIoni Bowcher NEGOTIATION
Tony FollerGermanyStephen Shaw NEW
Clifford RimCanadaIoni Bowcher QUALIFIED
Aruna FigeroaAustraliaXuxue Feng RENEWAL
Faith GillianFranceIoni Bowcher UNQUALIFIED
Deepesh ChuiItalyStephen Shaw UNQUALIFIED
Emily WhobreyCanadaBernardo Dominic RENEWAL
Murillo MaletJapanAnna Fali RENEWAL
Emily WhobreyGermanyOnyama Limba RENEWAL
Darci PoquetteIndiaOnyama Limba QUALIFIED
James ButtSpainElwin Sharvill PROPOSAL
Chavez BriddickRussiaBernardo Dominic PROPOSAL
Leon OldroydItalyIvan Magalhaes UNQUALIFIED
Salvatore StockhamJapanBernardo Dominic NEW
Adams MorascaGermanyIvan Magalhaes NEGOTIATION
Tony FollerSpainBernardo Dominic RENEWAL
Kadeem FlosiGermanyAmy Elsner RENEWAL
Octavia MaletItalyAsiya Javayant QUALIFIED
Leja CaldareraArgentinaStephen Shaw PROPOSAL
Leon OldroydCanadaElwin Sharvill RENEWAL
Adams MorascaRussiaElwin Sharvill NEGOTIATION
Sinclair WaycottBrazilIvan Magalhaes RENEWAL
Wickens NestleGermanyIoni Bowcher RENEWAL
Mujtaba NickaSpainBernardo Dominic RENEWAL
Rodrigues CampainGermanyOnyama Limba UNQUALIFIED
Deepesh ChuiAustraliaIvan Magalhaes NEGOTIATION
Isabel BowleyArgentinaOnyama Limba QUALIFIED
Jones VocelkaIndiaAmy Elsner QUALIFIED
Julie StensethJapanAsiya Javayant QUALIFIED
Ricardo GauchoIndiaStephen Shaw UNQUALIFIED
Ashley DoeJapanBernardo Dominic NEW
Silvio SlusarskiAustraliaOnyama Limba PROPOSAL
Ivar PaprockiCanadaStephen Shaw RENEWAL
Frozen Columns
Name
Jones Vocelka
Wickens Nestle
Jefferson Schemmer
Ashley Doe
Jeanfrancois Venere
Ashley Doe
Leon Oldroyd
Leon Oldroyd
James Butt
Misaki Royster
Wickens Nestle
Leja Caldarera
Leon Oldroyd
Isabel Bowley
Aika Inouye
Wickens Nestle
Kadeem Flosi
Murillo Malet
Mujtaba Nicka
Jennifer Amigon
Jones Vocelka
Aditya Kusko
Mujtaba Nicka
Adams Morasca
Sinclair Waycott
Clifford Rim
Greenwood Bolognia
Aika Inouye
Nicolas Iturbide
Nicolas Iturbide
Clifford Rim
Jennifer Amigon
Wickens Nestle
Jones Vocelka
Alejandro Perin
Wickens Nestle
Jennifer Amigon
Sinclair Waycott
Misaki Royster
Munro Ferencz
Johnson Sergi
Chavez Briddick
Greenwood Bolognia
Rodrigues Campain
Deepesh Chui
Morrow Ruta
Sinclair Waycott
David Darakjy
Arvin Albares
Izzy Garufi
IdCountryDate
1000Spain2026-05-28
1001Canada2026-06-10
1002Japan2026-05-29
1003India2026-06-01
1004India2026-06-03
1005Spain2026-05-24
1006Russia2026-06-07
1007Australia2026-06-04
1008France2026-06-10
1009Russia2026-06-08
1010Germany2026-06-12
1011Germany2026-05-19
1012Brazil2026-06-04
1013Brazil2026-06-06
1014Canada2026-06-05
1015Spain2026-05-17
1016Germany2026-06-01
1017Japan2026-05-29
1018Canada2026-06-01
1019Australia2026-05-31
1020Canada2026-06-01
1021Germany2026-06-09
1022India2026-05-25
1023Australia2026-05-17
1024Russia2026-05-20
1025Brazil2026-05-22
1026Japan2026-05-31
1027Russia2026-06-03
1028United Kingdom2026-05-21
1029Argentina2026-06-04
1030France2026-05-22
1031Spain2026-06-06
1032India2026-05-15
1033United Kingdom2026-05-16
1034Argentina2026-06-07
1035Argentina2026-05-29
1036Canada2026-05-18
1037Argentina2026-05-22
1038Germany2026-06-04
1039Argentina2026-05-25
1040Brazil2026-05-16
1041Germany2026-05-27
1042Italy2026-05-18
1043Argentina2026-05-15
1044Brazil2026-06-08
1045France2026-05-29
1046France2026-05-24
1047Canada2026-05-18
1048Germany2026-06-10
1049Spain2026-05-25

On-Demand Data

NameIdCountryDate
Leon Oldroyd1000Spain2026-05-15
Alejandro Perin1001Spain2026-05-17
Antonio Caudy1002Italy2026-05-19
Alejandro Perin1003Russia2026-06-04
David Darakjy1004Russia2026-05-22
Chavez Briddick1005Japan2026-06-08
Octavia Malet1006Spain2026-06-01
Chavez Briddick1007Japan2026-05-21
David Darakjy1008France2026-05-17
Cody Saylors1009Japan2026-05-29
Tony Foller1010Canada2026-05-14
Aruna Figeroa1011Italy2026-05-14
Chavez Briddick1012Australia2026-06-03
Nicolas Iturbide1013Argentina2026-05-31
Izzy Garufi1014India2026-06-07
Jones Vocelka1015France2026-05-20
Smith Glick1016Spain2026-05-19
Mujtaba Nicka1017Canada2026-06-07
Jefferson Schemmer1018Australia2026-05-19
Aruna Figeroa1019Spain2026-05-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Izzy GarufiJapanIvan Magalhaes RENEWAL
Jennifer AmigonUnited KingdomXuxue Feng QUALIFIED
Mayumi KolmetzCanadaAsiya Javayant QUALIFIED
Jones VocelkaRussiaXuxue Feng QUALIFIED
Ricardo GauchoItalyIvan Magalhaes RENEWAL
Julie StensethGermanyStephen Shaw NEGOTIATION
Claire TollnerAustraliaIoni Bowcher RENEWAL
Leon OldroydUnited KingdomIoni Bowcher NEGOTIATION
Jones VocelkaRussiaAmy Elsner NEGOTIATION
Ashley DoeItalyBernardo Dominic QUALIFIED
Murillo MaletRussiaElwin Sharvill QUALIFIED
Francesco ShinkoSpainBernardo Dominic QUALIFIED
Salvatore StockhamJapanAmy Elsner NEW
Izzy GarufiUnited KingdomXuxue Feng RENEWAL
Rodrigues CampainBrazilBernardo Dominic NEGOTIATION
David DarakjySpainBernardo Dominic NEGOTIATION
Arvin AlbaresUnited KingdomAmy Elsner PROPOSAL
Clifford RimItalyIvan Magalhaes PROPOSAL
Stacey MacleadArgentinaStephen Shaw QUALIFIED
Aruna FigeroaJapanAsiya Javayant UNQUALIFIED
Jeanfrancois VenereCanadaStephen Shaw RENEWAL
Arvin AlbaresJapanOnyama Limba UNQUALIFIED
Leja CaldareraCanadaIvan Magalhaes UNQUALIFIED
Clifford RimIndiaAsiya Javayant NEGOTIATION
Aruna FigeroaGermanyAmy Elsner QUALIFIED
Misaki RoysterIndiaStephen Shaw NEGOTIATION
Leon OldroydCanadaStephen Shaw PROPOSAL
Kaitlin OstroskyFranceElwin Sharvill NEW
Deepesh ChuiGermanyAsiya Javayant QUALIFIED
Greenwood BologniaSpainStephen Shaw QUALIFIED
James ButtJapanAnna Fali QUALIFIED
Kaitlin OstroskySpainElwin Sharvill NEW
Juan WieserCanadaXuxue Feng QUALIFIED
Aditya KuskoItalyIvan Magalhaes UNQUALIFIED
Aditya KuskoItalyAsiya Javayant NEGOTIATION
Munro FerenczItalyOnyama Limba UNQUALIFIED
Silvio SlusarskiFranceAmy Elsner UNQUALIFIED
Maisha RulapaughFranceAmy Elsner RENEWAL
Faith GillianUnited KingdomAmy Elsner NEGOTIATION
Adams MorascaCanadaIvan Magalhaes 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>