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
Antonio CaudyItalyXuxue Feng PROPOSAL
Ivar PaprockiFranceBernardo Dominic RENEWAL
Aditya KuskoIndiaStephen Shaw PROPOSAL
Kadeem FlosiBrazilOnyama Limba RENEWAL
Juan WieserCanadaAmy Elsner NEGOTIATION
Emily WhobreyBrazilOnyama Limba NEGOTIATION
Jennifer AmigonRussiaBernardo Dominic PROPOSAL
Jennifer AmigonArgentinaAmy Elsner QUALIFIED
Clifford RimCanadaXuxue Feng RENEWAL
Ricardo GauchoGermanyIoni Bowcher QUALIFIED
Murillo MaletItalyOnyama Limba PROPOSAL
Emily WhobreyUnited KingdomBernardo Dominic PROPOSAL
Antonio CaudySpainElwin Sharvill RENEWAL
Silvio SlusarskiSpainAmy Elsner PROPOSAL
Sinclair WaycottItalyAmy Elsner QUALIFIED
Clifford RimArgentinaAmy Elsner RENEWAL
Munro FerenczSpainAnna Fali PROPOSAL
Clifford RimBrazilOnyama Limba PROPOSAL
Ricardo GauchoRussiaIoni Bowcher NEW
Nicolas IturbideJapanStephen Shaw RENEWAL
Kadeem FlosiJapanAnna Fali QUALIFIED
Chavez BriddickUnited KingdomAmy Elsner UNQUALIFIED
Munro FerenczSpainBernardo Dominic RENEWAL
Darci PoquetteRussiaAmy Elsner PROPOSAL
Ricardo GauchoIndiaStephen Shaw UNQUALIFIED
Adams MorascaJapanIoni Bowcher NEW
Rodrigues CampainCanadaStephen Shaw NEGOTIATION
James ButtRussiaBernardo Dominic QUALIFIED
Stacey MacleadSpainAnna Fali UNQUALIFIED
Rodrigues CampainGermanyAsiya Javayant RENEWAL
Alejandro PerinIndiaBernardo Dominic RENEWAL
Isabel BowleyBrazilElwin Sharvill UNQUALIFIED
Munro FerenczAustraliaIvan Magalhaes RENEWAL
Smith GlickSpainAnna Fali NEGOTIATION
Jennifer AmigonArgentinaIoni Bowcher RENEWAL
Isabel BowleyIndiaElwin Sharvill QUALIFIED
Johnson SergiAustraliaElwin Sharvill NEW
Maisha RulapaughGermanyAnna Fali NEW
Faith GillianJapanBernardo Dominic NEGOTIATION
Costa DilliardUnited KingdomAsiya Javayant PROPOSAL
Silvio SlusarskiCanadaBernardo Dominic UNQUALIFIED
Deepesh ChuiSpainAnna Fali NEW
Francesco ShinkoSpainAnna Fali RENEWAL
Arvin AlbaresAustraliaAnna Fali NEW
Maria MarrierRussiaIvan Magalhaes PROPOSAL
Jeanfrancois VenereUnited KingdomIoni Bowcher RENEWAL
Isabel BowleyAustraliaOnyama Limba NEGOTIATION
Juan WieserSpainAmy Elsner NEW
Silvio SlusarskiArgentinaIvan Magalhaes PROPOSAL
Rodrigues CampainAustraliaStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
James ButtRussiaIoni Bowcher UNQUALIFIED
Tony FollerSpainStephen Shaw UNQUALIFIED
Mujtaba NickaCanadaXuxue Feng UNQUALIFIED
Stacey MacleadBrazilXuxue Feng PROPOSAL
Mayumi KolmetzFranceXuxue Feng RENEWAL
David DarakjyUnited KingdomElwin Sharvill NEW
Smith GlickJapanIoni Bowcher RENEWAL
Rodrigues CampainBrazilXuxue Feng QUALIFIED
Julie StensethItalyAnna Fali NEGOTIATION
Antonio CaudyRussiaAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa DilliardBrazil2026-04-25Truhlar And Truhlar Attys QUALIFIED99Ivan Magalhaes
1001Leja CaldareraRussia2026-04-13Feiner Bros NEW73Amy Elsner
1002Munro FerenczGermany2026-04-05Feiner Bros PROPOSAL20Elwin Sharvill
1003Jennifer AmigonRussia2026-04-07Chemel, James L Cpa QUALIFIED23Ioni Bowcher
1004Mayumi KolmetzGermany2026-04-21Chemel, James L Cpa UNQUALIFIED91Bernardo Dominic
1005Juan WieserGermany2026-04-02Buckley Miller Wright PROPOSAL4Stephen Shaw
1006Darci PoquetteSpain2026-04-20Commercial Press RENEWAL44Bernardo Dominic
1007Maria MarrierIndia2026-04-21Morlong Associates RENEWAL18Onyama Limba
1008Smith GlickFrance2026-04-18Rangoni Of Florence NEGOTIATION38Ivan Magalhaes
1009Morrow RutaUnited Kingdom2026-04-04King, Christopher A Esq NEGOTIATION9Onyama Limba
1010Costa DilliardGermany2026-04-13Morlong Associates NEGOTIATION51Elwin Sharvill
1011Maria MarrierUnited Kingdom2026-04-17Dorl, James J Esq PROPOSAL27Ivan Magalhaes
1012Julie StensethRussia2026-03-31Morlong Associates NEGOTIATION54Ivan Magalhaes
1013Kaitlin OstroskyGermany2026-04-03Feiner Bros RENEWAL61Elwin Sharvill
1014Smith GlickFrance2026-04-16Rangoni Of Florence RENEWAL20Elwin Sharvill
1015Leja CaldareraFrance2026-04-18Rousseaux, Michael Esq NEW53Onyama Limba
1016Jones VocelkaUnited Kingdom2026-04-24Rangoni Of Florence PROPOSAL66Anna Fali
1017Aruna FigeroaRussia2026-04-14Feltz Printing Service NEGOTIATION97Ioni Bowcher
1018Jefferson SchemmerJapan2026-04-22Morlong Associates UNQUALIFIED51Ivan Magalhaes
1019Kadeem FlosiBrazil2026-04-03Rangoni Of Florence PROPOSAL65Xuxue Feng
1020David DarakjySpain2026-03-31Printing Dimensions UNQUALIFIED57Amy Elsner
1021Salvatore StockhamSpain2026-03-29Feltz Printing Service NEW44Ivan Magalhaes
1022Aditya KuskoRussia2026-03-30Chanay, Jeffrey A Esq QUALIFIED98Amy Elsner
1023Munro FerenczIndia2026-04-01Feiner Bros QUALIFIED84Stephen Shaw
1024Alejandro PerinArgentina2026-04-04Feltz Printing Service RENEWAL83Stephen Shaw
1025Faith GillianItaly2026-04-01Feiner Bros NEGOTIATION6Amy Elsner
1026Cody SaylorsFrance2026-04-07Chapman, Ross E Esq QUALIFIED87Stephen Shaw
1027Juan WieserFrance2026-04-04Printing Dimensions RENEWAL88Onyama Limba
1028Costa DilliardJapan2026-04-07Printing Dimensions NEW23Bernardo Dominic
1029Juan WieserFrance2026-04-07Rangoni Of Florence UNQUALIFIED13Stephen Shaw
1030Greenwood BologniaUnited Kingdom2026-04-16Dorl, James J Esq RENEWAL31Asiya Javayant
1031Aditya KuskoUnited Kingdom2026-03-30Rousseaux, Michael Esq NEGOTIATION80Bernardo Dominic
1032Darci PoquetteIndia2026-04-26Benton, John B Jr RENEWAL32Elwin Sharvill
1033Ashley DoeFrance2026-04-02Rangoni Of Florence QUALIFIED43Anna Fali
1034Leon OldroydRussia2026-03-30Truhlar And Truhlar Attys RENEWAL70Xuxue Feng
1035Costa DilliardIndia2026-04-27Chanay, Jeffrey A Esq RENEWAL1Ivan Magalhaes
1036Maisha RulapaughGermany2026-04-22Benton, John B Jr NEGOTIATION77Stephen Shaw
1037Arvin AlbaresBrazil2026-04-16Truhlar And Truhlar Attys QUALIFIED93Ivan Magalhaes
1038Maria MarrierAustralia2026-04-27Chapman, Ross E Esq RENEWAL40Onyama Limba
1039Cody SaylorsArgentina2026-04-18Chanay, Jeffrey A Esq UNQUALIFIED61Asiya Javayant
1040Silvio SlusarskiUnited Kingdom2026-04-16Buckley Miller Wright QUALIFIED0Stephen Shaw
1041Cody SaylorsAustralia2026-04-27Chapman, Ross E Esq UNQUALIFIED0Ioni Bowcher
1042Johnson SergiFrance2026-04-19Dorl, James J Esq PROPOSAL29Ioni Bowcher
1043Leon OldroydCanada2026-04-04Truhlar And Truhlar Attys NEW63Onyama Limba
1044Rodrigues CampainCanada2026-04-17Feltz Printing Service UNQUALIFIED87Anna Fali
1045Izzy GarufiRussia2026-04-25Truhlar And Truhlar Attys UNQUALIFIED32Amy Elsner
1046Ivar PaprockiJapan2026-03-30Printing Dimensions NEGOTIATION32Xuxue Feng
1047Aruna FigeroaBrazil2026-04-03Printing Dimensions RENEWAL58Ioni Bowcher
1048Claire TollnerGermany2026-04-03King, Christopher A Esq UNQUALIFIED11Ioni Bowcher
1049David DarakjyRussia2026-04-20Dorl, James J Esq QUALIFIED45Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Maisha RulapaughAustraliaBernardo Dominic NEW
Mayumi KolmetzUnited KingdomBernardo Dominic QUALIFIED
Jeanfrancois VenereFranceStephen Shaw PROPOSAL
Kadeem FlosiAustraliaAsiya Javayant RENEWAL
Darci PoquetteItalyStephen Shaw NEGOTIATION
David DarakjyBrazilStephen Shaw PROPOSAL
Izzy GarufiItalyIoni Bowcher NEW
Costa DilliardSpainAsiya Javayant QUALIFIED
Leon OldroydUnited KingdomStephen Shaw PROPOSAL
Kaitlin OstroskyGermanyOnyama Limba RENEWAL
Juan WieserRussiaXuxue Feng RENEWAL
Munro FerenczIndiaAmy Elsner NEW
Murillo MaletAustraliaBernardo Dominic RENEWAL
Ricardo GauchoSpainStephen Shaw RENEWAL
Leja CaldareraRussiaAnna Fali UNQUALIFIED
Mujtaba NickaSpainOnyama Limba QUALIFIED
Ashley DoeRussiaOnyama Limba PROPOSAL
Kadeem FlosiGermanyOnyama Limba RENEWAL
Munro FerenczItalyIvan Magalhaes NEW
Faith GillianSpainStephen Shaw NEW
Sinclair WaycottItalyAmy Elsner PROPOSAL
Alejandro PerinBrazilAmy Elsner NEW
Aruna FigeroaSpainOnyama Limba PROPOSAL
Emily WhobreyArgentinaXuxue Feng RENEWAL
Johnson SergiGermanyStephen Shaw UNQUALIFIED
Francesco ShinkoIndiaStephen Shaw QUALIFIED
Ivar PaprockiItalyStephen Shaw PROPOSAL
Ashley DoeUnited KingdomXuxue Feng PROPOSAL
Greenwood BologniaBrazilAsiya Javayant RENEWAL
Rodrigues CampainGermanyAmy Elsner RENEWAL
Mayumi KolmetzBrazilStephen Shaw UNQUALIFIED
Jeanfrancois VenereJapanAmy Elsner NEW
Kadeem FlosiIndiaAnna Fali NEW
Mujtaba NickaAustraliaAmy Elsner RENEWAL
Alejandro PerinArgentinaXuxue Feng PROPOSAL
Juan WieserAustraliaIoni Bowcher NEGOTIATION
Morrow RutaArgentinaOnyama Limba QUALIFIED
Costa DilliardGermanyAsiya Javayant NEGOTIATION
Mujtaba NickaIndiaAsiya Javayant RENEWAL
James ButtJapanAmy Elsner RENEWAL
Silvio SlusarskiGermanyStephen Shaw PROPOSAL
Arvin AlbaresArgentinaIoni Bowcher PROPOSAL
Claire TollnerUnited KingdomAmy Elsner NEGOTIATION
Munro FerenczRussiaElwin Sharvill PROPOSAL
Maria MarrierCanadaElwin Sharvill UNQUALIFIED
Stacey MacleadFranceIvan Magalhaes NEGOTIATION
Isabel BowleyUnited KingdomOnyama Limba RENEWAL
Rodrigues CampainBrazilIvan Magalhaes QUALIFIED
Adams MorascaIndiaXuxue Feng QUALIFIED
Aditya KuskoSpainElwin Sharvill PROPOSAL
Frozen Columns
Name
Murillo Malet
Wickens Nestle
Francesco Shinko
Costa Dilliard
Izzy Garufi
Tony Foller
Wickens Nestle
Misaki Royster
Leja Caldarera
Costa Dilliard
Costa Dilliard
Salvatore Stockham
Jennifer Amigon
Aruna Figeroa
Ashley Doe
Aditya Kusko
Kaitlin Ostrosky
Greenwood Bolognia
Wickens Nestle
Ashley Doe
Aruna Figeroa
Juan Wieser
Alejandro Perin
Smith Glick
Aditya Kusko
Mayumi Kolmetz
Costa Dilliard
James Butt
Mayumi Kolmetz
Stacey Maclead
Aditya Kusko
Cody Saylors
Costa Dilliard
Claire Tollner
Greenwood Bolognia
Nicolas Iturbide
Salvatore Stockham
Faith Gillian
Isabel Bowley
Izzy Garufi
Jennifer Amigon
Isabel Bowley
Sinclair Waycott
Francesco Shinko
James Butt
Rodrigues Campain
Kadeem Flosi
Darci Poquette
Adams Morasca
Arvin Albares
IdCountryDate
1000India2026-04-27
1001Russia2026-04-16
1002France2026-04-14
1003Canada2026-04-06
1004Spain2026-04-16
1005Russia2026-04-05
1006Japan2026-04-03
1007Spain2026-04-18
1008France2026-03-30
1009India2026-04-08
1010United Kingdom2026-04-27
1011France2026-04-08
1012India2026-04-27
1013Australia2026-04-04
1014Brazil2026-04-08
1015Argentina2026-04-20
1016Australia2026-04-04
1017Argentina2026-04-04
1018France2026-03-29
1019United Kingdom2026-04-01
1020France2026-04-05
1021Canada2026-04-17
1022Brazil2026-04-19
1023Germany2026-04-26
1024Italy2026-04-11
1025Argentina2026-04-08
1026Italy2026-04-09
1027France2026-04-08
1028Japan2026-03-29
1029Canada2026-04-27
1030Germany2026-04-15
1031France2026-03-29
1032Australia2026-04-27
1033Argentina2026-04-14
1034Canada2026-04-05
1035United Kingdom2026-03-29
1036Italy2026-04-08
1037United Kingdom2026-04-07
1038India2026-04-27
1039Australia2026-04-05
1040Germany2026-04-12
1041Italy2026-04-12
1042United Kingdom2026-04-26
1043Russia2026-04-11
1044Germany2026-04-18
1045Argentina2026-04-10
1046India2026-04-20
1047India2026-04-02
1048Italy2026-04-09
1049Canada2026-04-04

On-Demand Data

NameIdCountryDate
Kadeem Flosi1000Argentina2026-04-22
Tony Foller1001Australia2026-04-22
Sinclair Waycott1002India2026-04-19
Isabel Bowley1003United Kingdom2026-03-30
Jones Vocelka1004United Kingdom2026-03-30
Julie Stenseth1005Spain2026-04-18
Deepesh Chui1006Japan2026-04-24
Leja Caldarera1007Japan2026-03-29
Leon Oldroyd1008Brazil2026-03-29
Ricardo Gaucho1009Brazil2026-03-31
Arvin Albares1010United Kingdom2026-03-29
Aditya Kusko1011Germany2026-04-08
Antonio Caudy1012India2026-04-04
Tony Foller1013Japan2026-04-13
Claire Tollner1014Italy2026-04-02
Wickens Nestle1015Argentina2026-04-10
Jones Vocelka1016Japan2026-03-29
Mayumi Kolmetz1017India2026-04-26
Leon Oldroyd1018Argentina2026-04-10
Misaki Royster1019Canada2026-04-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Cody SaylorsIndiaIoni Bowcher UNQUALIFIED
Silvio SlusarskiBrazilElwin Sharvill UNQUALIFIED
Morrow RutaJapanStephen Shaw RENEWAL
Chavez BriddickGermanyIoni Bowcher QUALIFIED
Greenwood BologniaSpainStephen Shaw QUALIFIED
Darci PoquetteGermanyOnyama Limba RENEWAL
Claire TollnerBrazilOnyama Limba PROPOSAL
Johnson SergiUnited KingdomXuxue Feng NEW
Julie StensethUnited KingdomBernardo Dominic PROPOSAL
Kadeem FlosiIndiaIoni Bowcher NEGOTIATION
Francesco ShinkoItalyElwin Sharvill RENEWAL
Ivar PaprockiJapanStephen Shaw RENEWAL
Rodrigues CampainGermanyXuxue Feng NEGOTIATION
Ivar PaprockiAustraliaElwin Sharvill NEW
Mayumi KolmetzRussiaStephen Shaw NEGOTIATION
Munro FerenczGermanyElwin Sharvill NEW
Darci PoquetteSpainStephen Shaw PROPOSAL
Leon OldroydSpainIvan Magalhaes QUALIFIED
Salvatore StockhamRussiaAsiya Javayant UNQUALIFIED
Leja CaldareraFranceStephen Shaw QUALIFIED
Sinclair WaycottIndiaXuxue Feng NEGOTIATION
Stacey MacleadBrazilIvan Magalhaes UNQUALIFIED
Johnson SergiCanadaAsiya Javayant UNQUALIFIED
Stacey MacleadCanadaIoni Bowcher PROPOSAL
Isabel BowleyUnited KingdomIoni Bowcher RENEWAL
Jennifer AmigonUnited KingdomAsiya Javayant UNQUALIFIED
Maisha RulapaughBrazilIoni Bowcher QUALIFIED
Antonio CaudyJapanOnyama Limba NEW
Silvio SlusarskiFranceAnna Fali PROPOSAL
James ButtJapanAsiya Javayant RENEWAL
Johnson SergiIndiaAmy Elsner NEGOTIATION
Aditya KuskoJapanOnyama Limba PROPOSAL
Clifford RimRussiaAmy Elsner NEGOTIATION
Morrow RutaCanadaOnyama Limba UNQUALIFIED
Leja CaldareraJapanIoni Bowcher NEW
Ivar PaprockiCanadaXuxue Feng PROPOSAL
Leja CaldareraSpainAnna Fali NEW
Cody SaylorsItalyStephen Shaw UNQUALIFIED
Darci PoquetteCanadaAmy Elsner NEW
Maisha RulapaughGermanyOnyama Limba NEGOTIATION

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