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
Leja CaldareraArgentinaBernardo Dominic QUALIFIED
Cody SaylorsJapanIvan Magalhaes UNQUALIFIED
Leon OldroydUnited KingdomIoni Bowcher UNQUALIFIED
Costa DilliardAustraliaElwin Sharvill NEW
Leja CaldareraUnited KingdomIvan Magalhaes QUALIFIED
Arvin AlbaresRussiaIoni Bowcher UNQUALIFIED
Aruna FigeroaCanadaAnna Fali PROPOSAL
Maria MarrierCanadaBernardo Dominic NEW
Maria MarrierUnited KingdomXuxue Feng RENEWAL
Deepesh ChuiBrazilIoni Bowcher PROPOSAL
Sinclair WaycottArgentinaElwin Sharvill UNQUALIFIED
Nicolas IturbideArgentinaIoni Bowcher UNQUALIFIED
Chavez BriddickRussiaAmy Elsner NEW
Aditya KuskoItalyIvan Magalhaes NEGOTIATION
Silvio SlusarskiJapanStephen Shaw PROPOSAL
Rodrigues CampainGermanyAsiya Javayant PROPOSAL
Leja CaldareraJapanElwin Sharvill RENEWAL
Maisha RulapaughAustraliaElwin Sharvill NEW
Maisha RulapaughGermanyIvan Magalhaes UNQUALIFIED
Kaitlin OstroskySpainOnyama Limba RENEWAL
Johnson SergiFranceAmy Elsner NEW
Johnson SergiIndiaStephen Shaw NEGOTIATION
Arvin AlbaresRussiaXuxue Feng NEW
Misaki RoysterGermanyAsiya Javayant RENEWAL
Arvin AlbaresIndiaElwin Sharvill NEW
Claire TollnerArgentinaIoni Bowcher NEW
Deepesh ChuiFranceXuxue Feng UNQUALIFIED
Murillo MaletArgentinaAnna Fali NEGOTIATION
Francesco ShinkoBrazilAmy Elsner NEW
Emily WhobreyItalyOnyama Limba NEW
Leon OldroydRussiaIoni Bowcher QUALIFIED
Tony FollerGermanyXuxue Feng NEW
Smith GlickUnited KingdomAmy Elsner QUALIFIED
Misaki RoysterIndiaAmy Elsner QUALIFIED
Leon OldroydIndiaBernardo Dominic UNQUALIFIED
Julie StensethIndiaAmy Elsner UNQUALIFIED
Isabel BowleyBrazilStephen Shaw NEW
Johnson SergiSpainXuxue Feng QUALIFIED
Chavez BriddickSpainStephen Shaw NEGOTIATION
Adams MorascaJapanXuxue Feng NEGOTIATION
David DarakjyBrazilIvan Magalhaes NEW
James ButtItalyAsiya Javayant QUALIFIED
Izzy GarufiArgentinaStephen Shaw NEW
Leon OldroydRussiaOnyama Limba NEW
Alejandro PerinJapanIvan Magalhaes UNQUALIFIED
Alejandro PerinCanadaAnna Fali NEW
Munro FerenczArgentinaOnyama Limba QUALIFIED
Aditya KuskoRussiaAmy Elsner QUALIFIED
Aruna FigeroaAustraliaAnna Fali RENEWAL
Aruna FigeroaItalyAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Francesco ShinkoRussiaAsiya Javayant NEGOTIATION
Rodrigues CampainUnited KingdomIoni Bowcher QUALIFIED
Chavez BriddickJapanBernardo Dominic PROPOSAL
Tony FollerArgentinaAsiya Javayant UNQUALIFIED
Alejandro PerinIndiaAnna Fali QUALIFIED
Faith GillianUnited KingdomOnyama Limba QUALIFIED
Tony FollerSpainIvan Magalhaes QUALIFIED
Darci PoquetteUnited KingdomStephen Shaw UNQUALIFIED
Jennifer AmigonArgentinaStephen Shaw NEW
Salvatore StockhamFranceIvan Magalhaes PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Deepesh ChuiArgentina2026-05-12Benton, John B Jr UNQUALIFIED71Asiya Javayant
1001Rodrigues CampainGermany2026-05-14Benton, John B Jr UNQUALIFIED66Elwin Sharvill
1002Sinclair WaycottIndia2026-05-17Benton, John B Jr NEGOTIATION23Stephen Shaw
1003Murillo MaletJapan2026-06-05Dorl, James J Esq PROPOSAL16Amy Elsner
1004Jefferson SchemmerItaly2026-05-09Benton, John B Jr RENEWAL2Ioni Bowcher
1005David DarakjyBrazil2026-05-19Rangoni Of Florence NEGOTIATION73Bernardo Dominic
1006Clifford RimSpain2026-05-13Chanay, Jeffrey A Esq PROPOSAL51Amy Elsner
1007Greenwood BologniaGermany2026-06-02Buckley Miller Wright UNQUALIFIED98Bernardo Dominic
1008Nicolas IturbideBrazil2026-05-28Feiner Bros NEW94Bernardo Dominic
1009Tony FollerArgentina2026-05-31Rangoni Of Florence NEGOTIATION55Bernardo Dominic
1010Clifford RimIndia2026-05-08Dorl, James J Esq UNQUALIFIED38Elwin Sharvill
1011Faith GillianSpain2026-05-20Printing Dimensions UNQUALIFIED7Asiya Javayant
1012Cody SaylorsJapan2026-05-12Rangoni Of Florence QUALIFIED26Bernardo Dominic
1013Alejandro PerinBrazil2026-05-18Chapman, Ross E Esq QUALIFIED47Amy Elsner
1014Murillo MaletFrance2026-05-20Truhlar And Truhlar Attys QUALIFIED83Bernardo Dominic
1015James ButtArgentina2026-05-16King, Christopher A Esq PROPOSAL30Asiya Javayant
1016Ricardo GauchoItaly2026-05-17Truhlar And Truhlar Attys NEGOTIATION0Stephen Shaw
1017Maisha RulapaughItaly2026-05-13Rousseaux, Michael Esq NEGOTIATION61Ivan Magalhaes
1018Sinclair WaycottBrazil2026-05-27Rangoni Of Florence UNQUALIFIED61Anna Fali
1019James ButtJapan2026-05-28Feltz Printing Service RENEWAL64Ivan Magalhaes
1020Ashley DoeSpain2026-05-22King, Christopher A Esq NEGOTIATION57Ivan Magalhaes
1021Ricardo GauchoJapan2026-05-13Benton, John B Jr NEGOTIATION75Elwin Sharvill
1022Mayumi KolmetzJapan2026-06-03Feiner Bros PROPOSAL62Onyama Limba
1023Johnson SergiItaly2026-05-13Rangoni Of Florence QUALIFIED95Onyama Limba
1024Rodrigues CampainArgentina2026-05-25Feltz Printing Service NEW6Asiya Javayant
1025Silvio SlusarskiFrance2026-05-13Buckley Miller Wright RENEWAL21Onyama Limba
1026Mujtaba NickaIndia2026-05-23Morlong Associates NEGOTIATION93Anna Fali
1027Clifford RimBrazil2026-05-21Truhlar And Truhlar Attys RENEWAL89Stephen Shaw
1028Juan WieserRussia2026-05-09Rangoni Of Florence RENEWAL32Ivan Magalhaes
1029Tony FollerUnited Kingdom2026-05-21Benton, John B Jr RENEWAL25Asiya Javayant
1030Jones VocelkaAustralia2026-05-26Rangoni Of Florence NEGOTIATION81Elwin Sharvill
1031Maisha RulapaughSpain2026-05-13Buckley Miller Wright QUALIFIED42Amy Elsner
1032Antonio CaudyCanada2026-05-29Printing Dimensions NEW90Ivan Magalhaes
1033Greenwood BologniaSpain2026-05-11Morlong Associates RENEWAL70Bernardo Dominic
1034Wickens NestleJapan2026-05-10Chapman, Ross E Esq NEGOTIATION98Asiya Javayant
1035Aditya KuskoJapan2026-05-30Chanay, Jeffrey A Esq UNQUALIFIED3Ioni Bowcher
1036Ricardo GauchoRussia2026-05-28Feiner Bros UNQUALIFIED64Amy Elsner
1037Maria MarrierSpain2026-05-13Truhlar And Truhlar Attys UNQUALIFIED2Bernardo Dominic
1038Munro FerenczAustralia2026-05-14Buckley Miller Wright QUALIFIED8Bernardo Dominic
1039Aruna FigeroaAustralia2026-05-18King, Christopher A Esq RENEWAL65Asiya Javayant
1040Isabel BowleyCanada2026-05-31Printing Dimensions PROPOSAL88Onyama Limba
1041Adams MorascaItaly2026-06-03Buckley Miller Wright NEGOTIATION17Onyama Limba
1042Leon OldroydBrazil2026-05-23Dorl, James J Esq UNQUALIFIED3Asiya Javayant
1043Kaitlin OstroskyBrazil2026-05-27Feltz Printing Service QUALIFIED17Ioni Bowcher
1044Salvatore StockhamAustralia2026-05-25Truhlar And Truhlar Attys QUALIFIED67Onyama Limba
1045James ButtBrazil2026-05-29Truhlar And Truhlar Attys QUALIFIED60Elwin Sharvill
1046Aika InouyeItaly2026-05-18Feiner Bros QUALIFIED32Xuxue Feng
1047Juan WieserGermany2026-05-28Benton, John B Jr RENEWAL91Amy Elsner
1048Stacey MacleadItaly2026-06-04Rousseaux, Michael Esq NEGOTIATION64Ivan Magalhaes
1049Sinclair WaycottGermany2026-05-19Buckley Miller Wright NEW48Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Aruna FigeroaUnited KingdomAmy Elsner UNQUALIFIED
Sinclair WaycottAustraliaIvan Magalhaes PROPOSAL
Smith GlickBrazilAnna Fali NEGOTIATION
Misaki RoysterCanadaElwin Sharvill QUALIFIED
Jennifer AmigonIndiaAsiya Javayant PROPOSAL
Julie StensethItalyAnna Fali NEGOTIATION
Emily WhobreyJapanAsiya Javayant PROPOSAL
Morrow RutaCanadaIvan Magalhaes PROPOSAL
Leja CaldareraRussiaOnyama Limba UNQUALIFIED
Munro FerenczIndiaElwin Sharvill NEGOTIATION
Jeanfrancois VenereItalyAsiya Javayant RENEWAL
Tony FollerAustraliaXuxue Feng RENEWAL
Juan WieserFranceAmy Elsner RENEWAL
Mujtaba NickaUnited KingdomIoni Bowcher NEGOTIATION
Maisha RulapaughArgentinaXuxue Feng NEGOTIATION
Ashley DoeItalyIvan Magalhaes UNQUALIFIED
Smith GlickRussiaAnna Fali RENEWAL
Silvio SlusarskiArgentinaAmy Elsner NEW
Aruna FigeroaIndiaIvan Magalhaes PROPOSAL
Maisha RulapaughUnited KingdomAsiya Javayant QUALIFIED
Alejandro PerinRussiaOnyama Limba PROPOSAL
David DarakjyCanadaIoni Bowcher QUALIFIED
Mujtaba NickaFranceAmy Elsner RENEWAL
Wickens NestleFranceStephen Shaw NEGOTIATION
Juan WieserJapanAsiya Javayant RENEWAL
Jeanfrancois VenereAustraliaElwin Sharvill UNQUALIFIED
Faith GillianSpainAnna Fali UNQUALIFIED
Clifford RimJapanXuxue Feng PROPOSAL
Silvio SlusarskiAustraliaBernardo Dominic QUALIFIED
Misaki RoysterFranceElwin Sharvill NEGOTIATION
Maria MarrierRussiaIoni Bowcher NEW
Aruna FigeroaCanadaStephen Shaw RENEWAL
Kaitlin OstroskyGermanyAmy Elsner RENEWAL
Juan WieserUnited KingdomElwin Sharvill RENEWAL
Ricardo GauchoGermanyAnna Fali UNQUALIFIED
Isabel BowleyBrazilStephen Shaw NEGOTIATION
Claire TollnerSpainIoni Bowcher QUALIFIED
Kadeem FlosiIndiaAsiya Javayant PROPOSAL
Mujtaba NickaRussiaElwin Sharvill QUALIFIED
Johnson SergiCanadaXuxue Feng RENEWAL
Wickens NestleAustraliaAsiya Javayant RENEWAL
Costa DilliardSpainAsiya Javayant NEW
Smith GlickFranceIvan Magalhaes NEW
Isabel BowleyItalyIvan Magalhaes NEW
Faith GillianArgentinaElwin Sharvill NEGOTIATION
Claire TollnerAustraliaAmy Elsner NEW
Julie StensethArgentinaXuxue Feng QUALIFIED
Costa DilliardCanadaAnna Fali RENEWAL
Ashley DoeJapanBernardo Dominic UNQUALIFIED
Aika InouyeUnited KingdomElwin Sharvill RENEWAL
Frozen Columns
Name
Deepesh Chui
Julie Stenseth
Smith Glick
Salvatore Stockham
Misaki Royster
Leja Caldarera
Ivar Paprocki
Cody Saylors
Nicolas Iturbide
Leja Caldarera
Claire Tollner
Mujtaba Nicka
Kadeem Flosi
Leon Oldroyd
Arvin Albares
Maria Marrier
Alejandro Perin
Julie Stenseth
Aruna Figeroa
Juan Wieser
Ashley Doe
Murillo Malet
Kaitlin Ostrosky
Jennifer Amigon
Greenwood Bolognia
Murillo Malet
Claire Tollner
Murillo Malet
David Darakjy
Ivar Paprocki
Maisha Rulapaugh
Isabel Bowley
Leon Oldroyd
Murillo Malet
Greenwood Bolognia
Aika Inouye
Salvatore Stockham
Antonio Caudy
Juan Wieser
Stacey Maclead
Izzy Garufi
Izzy Garufi
Juan Wieser
Alejandro Perin
Clifford Rim
Tony Foller
Alejandro Perin
Isabel Bowley
Francesco Shinko
Jennifer Amigon
IdCountryDate
1000India2026-05-18
1001Argentina2026-06-04
1002Argentina2026-05-18
1003France2026-05-27
1004Canada2026-05-23
1005Australia2026-05-22
1006Canada2026-05-24
1007Italy2026-06-04
1008Russia2026-05-29
1009Germany2026-05-30
1010France2026-05-20
1011Canada2026-05-21
1012Germany2026-06-01
1013Brazil2026-05-09
1014Japan2026-05-22
1015Russia2026-05-12
1016United Kingdom2026-05-23
1017Germany2026-05-25
1018Argentina2026-05-21
1019Argentina2026-05-20
1020Brazil2026-06-05
1021Australia2026-05-16
1022Brazil2026-05-31
1023Italy2026-05-16
1024Canada2026-05-27
1025United Kingdom2026-05-16
1026France2026-05-08
1027India2026-05-31
1028Australia2026-05-07
1029Germany2026-05-13
1030Russia2026-05-16
1031India2026-05-18
1032Russia2026-05-30
1033Brazil2026-05-28
1034Australia2026-05-08
1035Brazil2026-05-22
1036Spain2026-06-05
1037France2026-05-16
1038Russia2026-06-05
1039United Kingdom2026-06-04
1040Japan2026-05-08
1041Italy2026-05-10
1042Germany2026-05-21
1043India2026-05-22
1044Canada2026-05-17
1045United Kingdom2026-05-10
1046Italy2026-05-21
1047India2026-05-16
1048United Kingdom2026-05-10
1049Canada2026-05-30

On-Demand Data

NameIdCountryDate
Darci Poquette1000Italy2026-05-21
Tony Foller1001Spain2026-05-17
Claire Tollner1002United Kingdom2026-05-19
Cody Saylors1003Japan2026-05-25
Claire Tollner1004India2026-06-05
Kadeem Flosi1005Australia2026-05-20
Stacey Maclead1006Canada2026-06-04
Aika Inouye1007Spain2026-06-05
Jones Vocelka1008Brazil2026-05-30
Izzy Garufi1009Brazil2026-05-31
Chavez Briddick1010India2026-05-07
Faith Gillian1011Canada2026-06-05
Octavia Malet1012Australia2026-05-30
Juan Wieser1013Japan2026-05-30
Costa Dilliard1014Australia2026-05-25
Mujtaba Nicka1015Brazil2026-05-22
Leon Oldroyd1016Argentina2026-05-29
Alejandro Perin1017Argentina2026-06-05
Costa Dilliard1018Australia2026-05-16
Silvio Slusarski1019United Kingdom2026-05-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtCanadaIvan Magalhaes PROPOSAL
Morrow RutaCanadaBernardo Dominic NEGOTIATION
Faith GillianJapanAmy Elsner RENEWAL
Leon OldroydArgentinaBernardo Dominic NEW
Aditya KuskoSpainIoni Bowcher NEGOTIATION
Tony FollerArgentinaIvan Magalhaes UNQUALIFIED
Tony FollerBrazilAmy Elsner UNQUALIFIED
Alejandro PerinArgentinaAsiya Javayant UNQUALIFIED
Darci PoquetteRussiaAnna Fali UNQUALIFIED
Kaitlin OstroskyRussiaAsiya Javayant NEGOTIATION
Costa DilliardRussiaOnyama Limba PROPOSAL
Aruna FigeroaGermanyStephen Shaw QUALIFIED
Maisha RulapaughAustraliaStephen Shaw QUALIFIED
Chavez BriddickBrazilXuxue Feng PROPOSAL
Clifford RimUnited KingdomOnyama Limba NEW
Kaitlin OstroskyCanadaAsiya Javayant NEGOTIATION
Tony FollerIndiaAmy Elsner NEW
Deepesh ChuiJapanAmy Elsner QUALIFIED
Salvatore StockhamGermanyElwin Sharvill RENEWAL
Ricardo GauchoBrazilStephen Shaw RENEWAL
Salvatore StockhamUnited KingdomOnyama Limba PROPOSAL
Ashley DoeCanadaOnyama Limba NEGOTIATION
Jennifer AmigonArgentinaStephen Shaw UNQUALIFIED
Aika InouyeUnited KingdomAsiya Javayant QUALIFIED
Leon OldroydJapanStephen Shaw PROPOSAL
Leja CaldareraCanadaAsiya Javayant UNQUALIFIED
Emily WhobreyCanadaIoni Bowcher NEW
Faith GillianItalyAsiya Javayant NEGOTIATION
Aruna FigeroaFranceAnna Fali QUALIFIED
Leja CaldareraGermanyAnna Fali UNQUALIFIED
Adams MorascaIndiaAnna Fali RENEWAL
Clifford RimFranceBernardo Dominic NEGOTIATION
Cody SaylorsFranceIvan Magalhaes RENEWAL
Claire TollnerRussiaOnyama Limba NEW
Kadeem FlosiGermanyBernardo Dominic RENEWAL
Misaki RoysterJapanOnyama Limba PROPOSAL
Smith GlickBrazilAsiya Javayant RENEWAL
Claire TollnerFranceOnyama Limba UNQUALIFIED
Leon OldroydSpainAmy Elsner NEGOTIATION
Leon OldroydFranceElwin Sharvill 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>