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
Maisha RulapaughGermanyIvan Magalhaes NEW
Deepesh ChuiCanadaAmy Elsner PROPOSAL
Deepesh ChuiAustraliaXuxue Feng RENEWAL
Alejandro PerinSpainStephen Shaw NEGOTIATION
Smith GlickCanadaAnna Fali NEW
Salvatore StockhamGermanyBernardo Dominic NEGOTIATION
Jeanfrancois VenereGermanyAmy Elsner QUALIFIED
Jennifer AmigonBrazilBernardo Dominic PROPOSAL
Adams MorascaUnited KingdomBernardo Dominic PROPOSAL
Francesco ShinkoSpainAsiya Javayant UNQUALIFIED
Jennifer AmigonAustraliaBernardo Dominic QUALIFIED
Kaitlin OstroskyItalyBernardo Dominic NEW
Costa DilliardJapanElwin Sharvill PROPOSAL
Kadeem FlosiItalyElwin Sharvill QUALIFIED
Claire TollnerCanadaElwin Sharvill PROPOSAL
Leon OldroydSpainIvan Magalhaes RENEWAL
Salvatore StockhamCanadaOnyama Limba NEW
Juan WieserSpainAsiya Javayant PROPOSAL
Rodrigues CampainJapanBernardo Dominic QUALIFIED
Maisha RulapaughUnited KingdomAmy Elsner NEW
Arvin AlbaresCanadaIoni Bowcher RENEWAL
Emily WhobreyBrazilXuxue Feng PROPOSAL
Adams MorascaFranceStephen Shaw RENEWAL
Nicolas IturbideSpainIoni Bowcher NEW
Antonio CaudyIndiaXuxue Feng RENEWAL
Antonio CaudyJapanIoni Bowcher PROPOSAL
Isabel BowleyIndiaAmy Elsner NEW
Jennifer AmigonUnited KingdomElwin Sharvill RENEWAL
Costa DilliardCanadaAnna Fali PROPOSAL
Salvatore StockhamAustraliaAmy Elsner RENEWAL
Aika InouyeJapanAnna Fali RENEWAL
Claire TollnerIndiaXuxue Feng NEGOTIATION
Julie StensethIndiaStephen Shaw UNQUALIFIED
Leja CaldareraIndiaIoni Bowcher PROPOSAL
Darci PoquetteCanadaIoni Bowcher NEGOTIATION
Nicolas IturbideFranceXuxue Feng NEW
Morrow RutaFranceBernardo Dominic RENEWAL
Chavez BriddickUnited KingdomBernardo Dominic QUALIFIED
Claire TollnerRussiaIoni Bowcher NEGOTIATION
Faith GillianGermanyStephen Shaw UNQUALIFIED
Murillo MaletUnited KingdomElwin Sharvill NEW
Smith GlickItalyOnyama Limba UNQUALIFIED
Aditya KuskoArgentinaAsiya Javayant UNQUALIFIED
Smith GlickFranceElwin Sharvill RENEWAL
Morrow RutaBrazilIvan Magalhaes NEGOTIATION
Leon OldroydItalyAmy Elsner PROPOSAL
Mujtaba NickaFranceXuxue Feng NEGOTIATION
Murillo MaletJapanIoni Bowcher QUALIFIED
Chavez BriddickArgentinaAsiya Javayant UNQUALIFIED
Mujtaba NickaSpainAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Wickens NestleAustraliaOnyama Limba NEGOTIATION
Jennifer AmigonItalyIoni Bowcher PROPOSAL
Adams MorascaSpainStephen Shaw QUALIFIED
Misaki RoysterArgentinaIvan Magalhaes QUALIFIED
Deepesh ChuiArgentinaElwin Sharvill QUALIFIED
Morrow RutaBrazilXuxue Feng PROPOSAL
David DarakjySpainAsiya Javayant NEW
Juan WieserRussiaIvan Magalhaes NEGOTIATION
Jennifer AmigonArgentinaOnyama Limba QUALIFIED
Leja CaldareraUnited KingdomAsiya Javayant PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey MacleadFrance2026-05-02Feltz Printing Service RENEWAL72Ivan Magalhaes
1001Alejandro PerinIndia2026-04-26Rangoni Of Florence RENEWAL97Anna Fali
1002Morrow RutaSpain2026-05-05Buckley Miller Wright RENEWAL58Anna Fali
1003Silvio SlusarskiSpain2026-04-28Commercial Press UNQUALIFIED52Amy Elsner
1004Clifford RimAustralia2026-05-18Feltz Printing Service QUALIFIED54Asiya Javayant
1005Darci PoquetteAustralia2026-05-14Chemel, James L Cpa NEGOTIATION40Stephen Shaw
1006Clifford RimGermany2026-05-03Rangoni Of Florence NEGOTIATION46Amy Elsner
1007Murillo MaletCanada2026-04-27Chapman, Ross E Esq NEGOTIATION8Ioni Bowcher
1008Juan WieserJapan2026-05-21Rangoni Of Florence NEGOTIATION62Anna Fali
1009Ivar PaprockiSpain2026-05-13Feiner Bros UNQUALIFIED83Asiya Javayant
1010Juan WieserUnited Kingdom2026-05-20Morlong Associates RENEWAL37Asiya Javayant
1011Jefferson SchemmerUnited Kingdom2026-05-19King, Christopher A Esq NEGOTIATION89Bernardo Dominic
1012Jefferson SchemmerGermany2026-05-17Benton, John B Jr UNQUALIFIED73Ioni Bowcher
1013Wickens NestleIndia2026-04-29Chemel, James L Cpa RENEWAL52Xuxue Feng
1014Maisha RulapaughIndia2026-05-05Chanay, Jeffrey A Esq NEGOTIATION43Bernardo Dominic
1015Alejandro PerinIndia2026-05-24Commercial Press RENEWAL22Anna Fali
1016Emily WhobreyJapan2026-05-24Buckley Miller Wright RENEWAL67Xuxue Feng
1017Misaki RoysterRussia2026-05-14Buckley Miller Wright UNQUALIFIED99Ivan Magalhaes
1018Stacey MacleadArgentina2026-05-03Feiner Bros UNQUALIFIED83Amy Elsner
1019Munro FerenczCanada2026-05-02Benton, John B Jr UNQUALIFIED46Amy Elsner
1020Kadeem FlosiArgentina2026-05-06Printing Dimensions NEGOTIATION63Stephen Shaw
1021Mayumi KolmetzRussia2026-05-08Feiner Bros NEW73Anna Fali
1022Leja CaldareraBrazil2026-04-25Rangoni Of Florence RENEWAL18Bernardo Dominic
1023Clifford RimJapan2026-05-02King, Christopher A Esq RENEWAL96Anna Fali
1024Nicolas IturbideRussia2026-05-12Dorl, James J Esq QUALIFIED83Asiya Javayant
1025Rodrigues CampainGermany2026-05-08Chapman, Ross E Esq NEW12Asiya Javayant
1026Juan WieserJapan2026-05-15Morlong Associates NEW43Stephen Shaw
1027Silvio SlusarskiBrazil2026-05-07Chapman, Ross E Esq NEGOTIATION40Anna Fali
1028Octavia MaletAustralia2026-05-11Chapman, Ross E Esq NEGOTIATION32Ivan Magalhaes
1029Morrow RutaGermany2026-04-28Rangoni Of Florence UNQUALIFIED16Stephen Shaw
1030Jeanfrancois VenereAustralia2026-05-24Benton, John B Jr RENEWAL63Elwin Sharvill
1031Alejandro PerinUnited Kingdom2026-04-28Rangoni Of Florence NEGOTIATION80Anna Fali
1032Jennifer AmigonCanada2026-04-26Rousseaux, Michael Esq RENEWAL36Bernardo Dominic
1033Deepesh ChuiSpain2026-05-12Chanay, Jeffrey A Esq PROPOSAL61Anna Fali
1034Chavez BriddickUnited Kingdom2026-05-24Benton, John B Jr NEGOTIATION69Anna Fali
1035Izzy GarufiSpain2026-04-26Dorl, James J Esq NEGOTIATION89Amy Elsner
1036Sinclair WaycottCanada2026-05-15Rangoni Of Florence RENEWAL10Amy Elsner
1037Munro FerenczJapan2026-04-29Chanay, Jeffrey A Esq QUALIFIED96Elwin Sharvill
1038Aika InouyeJapan2026-04-30Benton, John B Jr QUALIFIED79Stephen Shaw
1039Jefferson SchemmerIndia2026-04-27Printing Dimensions PROPOSAL47Bernardo Dominic
1040Arvin AlbaresRussia2026-05-05Chapman, Ross E Esq RENEWAL37Bernardo Dominic
1041Chavez BriddickBrazil2026-05-14Chanay, Jeffrey A Esq NEGOTIATION53Ioni Bowcher
1042James ButtUnited Kingdom2026-05-08Chanay, Jeffrey A Esq PROPOSAL13Asiya Javayant
1043Maria MarrierRussia2026-05-17Morlong Associates NEW36Ioni Bowcher
1044Jennifer AmigonUnited Kingdom2026-04-29King, Christopher A Esq QUALIFIED33Elwin Sharvill
1045Wickens NestleIndia2026-05-02Dorl, James J Esq RENEWAL92Bernardo Dominic
1046Ricardo GauchoBrazil2026-05-04Buckley Miller Wright NEW1Stephen Shaw
1047Julie StensethIndia2026-05-02Morlong Associates UNQUALIFIED9Elwin Sharvill
1048Maisha RulapaughRussia2026-05-05Feltz Printing Service RENEWAL15Bernardo Dominic
1049Aditya KuskoGermany2026-04-25Chemel, James L Cpa NEW76Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Sinclair WaycottAustraliaIoni Bowcher QUALIFIED
Tony FollerItalyIvan Magalhaes RENEWAL
Aika InouyeFranceOnyama Limba NEGOTIATION
Emily WhobreyBrazilXuxue Feng QUALIFIED
Salvatore StockhamCanadaAsiya Javayant NEGOTIATION
Darci PoquetteBrazilBernardo Dominic QUALIFIED
Ivar PaprockiCanadaOnyama Limba NEGOTIATION
Sinclair WaycottItalyAnna Fali RENEWAL
Greenwood BologniaFranceAnna Fali NEGOTIATION
Darci PoquetteRussiaAnna Fali QUALIFIED
Arvin AlbaresFranceAmy Elsner PROPOSAL
Silvio SlusarskiAustraliaAmy Elsner PROPOSAL
Wickens NestleBrazilBernardo Dominic NEGOTIATION
Faith GillianGermanyElwin Sharvill NEW
Isabel BowleyAustraliaAsiya Javayant NEW
Maisha RulapaughFranceBernardo Dominic PROPOSAL
Silvio SlusarskiItalyAnna Fali UNQUALIFIED
Wickens NestleItalyOnyama Limba PROPOSAL
Aruna FigeroaCanadaAsiya Javayant NEW
Munro FerenczJapanElwin Sharvill RENEWAL
Alejandro PerinSpainAsiya Javayant QUALIFIED
Smith GlickJapanXuxue Feng NEGOTIATION
Smith GlickSpainElwin Sharvill PROPOSAL
Johnson SergiBrazilIoni Bowcher UNQUALIFIED
Nicolas IturbideSpainElwin Sharvill NEW
Salvatore StockhamCanadaBernardo Dominic RENEWAL
Aditya KuskoAustraliaIvan Magalhaes NEW
Wickens NestleFranceBernardo Dominic NEW
Salvatore StockhamBrazilAsiya Javayant UNQUALIFIED
Ivar PaprockiUnited KingdomIoni Bowcher NEW
Cody SaylorsIndiaAsiya Javayant NEGOTIATION
Francesco ShinkoJapanStephen Shaw NEGOTIATION
Greenwood BologniaUnited KingdomIoni Bowcher UNQUALIFIED
Izzy GarufiRussiaElwin Sharvill RENEWAL
Juan WieserRussiaOnyama Limba PROPOSAL
Maisha RulapaughFranceAmy Elsner NEW
Cody SaylorsBrazilAnna Fali PROPOSAL
Faith GillianGermanyIvan Magalhaes RENEWAL
Johnson SergiSpainAmy Elsner UNQUALIFIED
Octavia MaletUnited KingdomAmy Elsner NEGOTIATION
Misaki RoysterUnited KingdomStephen Shaw NEW
Smith GlickAustraliaElwin Sharvill QUALIFIED
James ButtRussiaStephen Shaw UNQUALIFIED
Ivar PaprockiUnited KingdomStephen Shaw RENEWAL
Maria MarrierItalyOnyama Limba NEW
Mayumi KolmetzAustraliaAmy Elsner QUALIFIED
Stacey MacleadUnited KingdomAnna Fali UNQUALIFIED
Antonio CaudyArgentinaBernardo Dominic NEGOTIATION
Clifford RimArgentinaIoni Bowcher UNQUALIFIED
Stacey MacleadCanadaAsiya Javayant NEGOTIATION
Frozen Columns
Name
Leon Oldroyd
Octavia Malet
Mujtaba Nicka
Juan Wieser
Murillo Malet
Tony Foller
Murillo Malet
Aditya Kusko
Nicolas Iturbide
Juan Wieser
Tony Foller
Jefferson Schemmer
Emily Whobrey
Ivar Paprocki
David Darakjy
Faith Gillian
Jeanfrancois Venere
Isabel Bowley
Morrow Ruta
Antonio Caudy
Aruna Figeroa
Salvatore Stockham
Wickens Nestle
Faith Gillian
Izzy Garufi
Costa Dilliard
Misaki Royster
Julie Stenseth
Smith Glick
Wickens Nestle
Morrow Ruta
Misaki Royster
Nicolas Iturbide
Faith Gillian
Cody Saylors
Leja Caldarera
Nicolas Iturbide
Johnson Sergi
James Butt
Isabel Bowley
Juan Wieser
Aditya Kusko
Emily Whobrey
Faith Gillian
Ricardo Gaucho
Costa Dilliard
Ashley Doe
Claire Tollner
Murillo Malet
Greenwood Bolognia
IdCountryDate
1000Japan2026-05-18
1001Germany2026-05-21
1002United Kingdom2026-05-01
1003Argentina2026-05-13
1004United Kingdom2026-05-15
1005Italy2026-05-23
1006Germany2026-04-25
1007Italy2026-05-24
1008France2026-04-26
1009United Kingdom2026-05-09
1010Brazil2026-05-15
1011Italy2026-05-24
1012Japan2026-05-09
1013India2026-04-29
1014Russia2026-05-10
1015France2026-04-26
1016Argentina2026-05-11
1017Australia2026-05-14
1018Spain2026-05-22
1019Russia2026-05-04
1020United Kingdom2026-05-12
1021Russia2026-05-16
1022Spain2026-05-17
1023Canada2026-05-07
1024Spain2026-05-18
1025Australia2026-05-02
1026Argentina2026-04-27
1027Canada2026-05-20
1028Italy2026-05-05
1029France2026-05-24
1030France2026-05-16
1031France2026-05-23
1032Germany2026-05-16
1033Russia2026-04-26
1034Japan2026-04-25
1035India2026-05-21
1036Australia2026-05-07
1037India2026-04-28
1038India2026-05-12
1039Spain2026-05-20
1040Canada2026-05-21
1041Australia2026-05-23
1042Brazil2026-05-23
1043Japan2026-05-16
1044Spain2026-05-07
1045India2026-05-05
1046Canada2026-05-12
1047Japan2026-05-05
1048Germany2026-05-18
1049Spain2026-05-04

On-Demand Data

NameIdCountryDate
Leja Caldarera1000France2026-05-21
Johnson Sergi1001Argentina2026-05-21
Claire Tollner1002Argentina2026-04-26
Faith Gillian1003Canada2026-05-04
Tony Foller1004Brazil2026-05-02
Murillo Malet1005Germany2026-05-03
Izzy Garufi1006United Kingdom2026-05-17
Kadeem Flosi1007France2026-05-10
Darci Poquette1008Argentina2026-05-07
Julie Stenseth1009Brazil2026-04-29
Ivar Paprocki1010Japan2026-05-03
Maria Marrier1011United Kingdom2026-05-05
Izzy Garufi1012Australia2026-04-25
Nicolas Iturbide1013Argentina2026-05-13
Mayumi Kolmetz1014Russia2026-05-20
Jeanfrancois Venere1015Spain2026-05-05
Isabel Bowley1016Brazil2026-05-04
Misaki Royster1017India2026-05-07
Izzy Garufi1018Australia2026-05-09
Emily Whobrey1019Japan2026-05-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jefferson SchemmerArgentinaStephen Shaw PROPOSAL
Misaki RoysterUnited KingdomAmy Elsner NEW
Alejandro PerinSpainStephen Shaw QUALIFIED
Izzy GarufiRussiaElwin Sharvill RENEWAL
Aditya KuskoRussiaElwin Sharvill RENEWAL
Kaitlin OstroskyAustraliaElwin Sharvill UNQUALIFIED
Isabel BowleyUnited KingdomAnna Fali RENEWAL
Ricardo GauchoUnited KingdomIvan Magalhaes RENEWAL
Ivar PaprockiBrazilAmy Elsner NEW
Julie StensethBrazilBernardo Dominic NEGOTIATION
Clifford RimItalyOnyama Limba PROPOSAL
Stacey MacleadUnited KingdomOnyama Limba PROPOSAL
Deepesh ChuiRussiaBernardo Dominic PROPOSAL
Deepesh ChuiCanadaOnyama Limba UNQUALIFIED
Faith GillianJapanIvan Magalhaes NEGOTIATION
Cody SaylorsFranceXuxue Feng RENEWAL
Aruna FigeroaItalyElwin Sharvill PROPOSAL
Murillo MaletFranceOnyama Limba NEGOTIATION
Maisha RulapaughAustraliaElwin Sharvill UNQUALIFIED
Claire TollnerIndiaOnyama Limba RENEWAL
Sinclair WaycottJapanAsiya Javayant UNQUALIFIED
James ButtBrazilIvan Magalhaes QUALIFIED
Adams MorascaSpainAsiya Javayant NEW
Jennifer AmigonCanadaOnyama Limba QUALIFIED
Darci PoquetteArgentinaXuxue Feng UNQUALIFIED
Octavia MaletJapanAmy Elsner RENEWAL
Claire TollnerSpainIvan Magalhaes NEW
Darci PoquetteItalyStephen Shaw UNQUALIFIED
Clifford RimRussiaBernardo Dominic QUALIFIED
Aika InouyeFranceElwin Sharvill UNQUALIFIED
Maria MarrierAustraliaElwin Sharvill RENEWAL
Greenwood BologniaBrazilAmy Elsner NEGOTIATION
Costa DilliardSpainIoni Bowcher NEW
Antonio CaudyCanadaElwin Sharvill RENEWAL
Adams MorascaArgentinaStephen Shaw PROPOSAL
Darci PoquetteArgentinaIoni Bowcher NEW
Jennifer AmigonRussiaStephen Shaw UNQUALIFIED
Izzy GarufiCanadaStephen Shaw UNQUALIFIED
Arvin AlbaresCanadaStephen Shaw PROPOSAL
Jennifer AmigonIndiaIoni Bowcher 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>