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
Sinclair WaycottFranceIoni Bowcher QUALIFIED
Mayumi KolmetzRussiaElwin Sharvill PROPOSAL
Maisha RulapaughCanadaIvan Magalhaes UNQUALIFIED
Nicolas IturbideBrazilElwin Sharvill NEW
Jennifer AmigonArgentinaAsiya Javayant NEW
Cody SaylorsUnited KingdomAnna Fali RENEWAL
Chavez BriddickAustraliaAnna Fali QUALIFIED
Murillo MaletCanadaXuxue Feng NEGOTIATION
Arvin AlbaresUnited KingdomOnyama Limba NEGOTIATION
Mayumi KolmetzFranceAnna Fali NEW
Juan WieserCanadaAsiya Javayant PROPOSAL
Stacey MacleadAustraliaIoni Bowcher PROPOSAL
Johnson SergiFranceXuxue Feng UNQUALIFIED
Nicolas IturbideSpainBernardo Dominic NEW
Leja CaldareraItalyIoni Bowcher UNQUALIFIED
Adams MorascaSpainStephen Shaw UNQUALIFIED
Sinclair WaycottAustraliaAsiya Javayant RENEWAL
Chavez BriddickIndiaStephen Shaw NEGOTIATION
Jones VocelkaIndiaIoni Bowcher UNQUALIFIED
Greenwood BologniaItalyXuxue Feng NEW
Tony FollerBrazilStephen Shaw NEGOTIATION
Deepesh ChuiItalyBernardo Dominic NEGOTIATION
Octavia MaletArgentinaAmy Elsner QUALIFIED
Claire TollnerFranceAmy Elsner NEW
Mujtaba NickaUnited KingdomBernardo Dominic RENEWAL
Claire TollnerItalyBernardo Dominic NEW
Adams MorascaItalyAmy Elsner QUALIFIED
Darci PoquetteFranceIvan Magalhaes NEGOTIATION
Jones VocelkaAustraliaAmy Elsner PROPOSAL
Kadeem FlosiJapanIvan Magalhaes NEGOTIATION
Sinclair WaycottAustraliaElwin Sharvill QUALIFIED
Rodrigues CampainAustraliaElwin Sharvill QUALIFIED
Ashley DoeArgentinaIvan Magalhaes UNQUALIFIED
Antonio CaudyFranceAsiya Javayant QUALIFIED
Mujtaba NickaIndiaAsiya Javayant NEW
Maria MarrierUnited KingdomOnyama Limba RENEWAL
Clifford RimUnited KingdomIoni Bowcher UNQUALIFIED
Mujtaba NickaUnited KingdomAmy Elsner NEW
Salvatore StockhamIndiaAnna Fali RENEWAL
Arvin AlbaresIndiaAnna Fali RENEWAL
Claire TollnerIndiaIvan Magalhaes PROPOSAL
Emily WhobreyAustraliaIvan Magalhaes UNQUALIFIED
Salvatore StockhamJapanXuxue Feng RENEWAL
Octavia MaletIndiaXuxue Feng PROPOSAL
James ButtJapanAnna Fali NEGOTIATION
Greenwood BologniaArgentinaAsiya Javayant NEGOTIATION
Antonio CaudyJapanAsiya Javayant QUALIFIED
James ButtUnited KingdomXuxue Feng NEW
Juan WieserGermanyBernardo Dominic NEGOTIATION
David DarakjyUnited KingdomOnyama Limba QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Greenwood BologniaRussiaIvan Magalhaes QUALIFIED
Isabel BowleySpainIoni Bowcher QUALIFIED
Murillo MaletUnited KingdomAmy Elsner RENEWAL
Claire TollnerUnited KingdomBernardo Dominic UNQUALIFIED
Kadeem FlosiAustraliaIoni Bowcher NEW
Smith GlickCanadaIoni Bowcher PROPOSAL
Isabel BowleyFranceIvan Magalhaes PROPOSAL
Smith GlickRussiaStephen Shaw UNQUALIFIED
David DarakjyCanadaBernardo Dominic RENEWAL
Chavez BriddickBrazilAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro PerinUnited Kingdom2026-05-30Printing Dimensions UNQUALIFIED80Asiya Javayant
1001Jeanfrancois VenereGermany2026-05-25Chemel, James L Cpa PROPOSAL41Anna Fali
1002Maria MarrierItaly2026-05-15Feltz Printing Service UNQUALIFIED24Ivan Magalhaes
1003Francesco ShinkoBrazil2026-05-27King, Christopher A Esq RENEWAL8Ivan Magalhaes
1004Maisha RulapaughBrazil2026-05-24Rangoni Of Florence RENEWAL68Amy Elsner
1005Smith GlickJapan2026-05-30Rousseaux, Michael Esq NEGOTIATION35Stephen Shaw
1006Aika InouyeUnited Kingdom2026-05-30Buckley Miller Wright PROPOSAL31Bernardo Dominic
1007Aruna FigeroaItaly2026-05-17Printing Dimensions NEGOTIATION78Asiya Javayant
1008Mayumi KolmetzAustralia2026-05-19Printing Dimensions QUALIFIED30Bernardo Dominic
1009Clifford RimBrazil2026-05-17Commercial Press NEW44Asiya Javayant
1010Faith GillianIndia2026-05-09Chemel, James L Cpa PROPOSAL18Asiya Javayant
1011Darci PoquetteArgentina2026-05-27Morlong Associates NEW53Asiya Javayant
1012Emily WhobreyGermany2026-05-13Benton, John B Jr RENEWAL74Bernardo Dominic
1013Rodrigues CampainBrazil2026-05-26Dorl, James J Esq NEW48Onyama Limba
1014Costa DilliardBrazil2026-05-23Chanay, Jeffrey A Esq PROPOSAL23Bernardo Dominic
1015Antonio CaudyGermany2026-05-26Feiner Bros UNQUALIFIED43Stephen Shaw
1016Alejandro PerinIndia2026-05-22Truhlar And Truhlar Attys NEGOTIATION83Ivan Magalhaes
1017Octavia MaletJapan2026-05-18Morlong Associates RENEWAL25Ivan Magalhaes
1018Maria MarrierCanada2026-05-18Rousseaux, Michael Esq QUALIFIED89Ivan Magalhaes
1019Aika InouyeGermany2026-05-12Truhlar And Truhlar Attys UNQUALIFIED57Elwin Sharvill
1020Juan WieserBrazil2026-05-23Truhlar And Truhlar Attys NEW53Amy Elsner
1021Adams MorascaGermany2026-05-31Chemel, James L Cpa QUALIFIED85Bernardo Dominic
1022Costa DilliardCanada2026-05-23Rangoni Of Florence QUALIFIED68Xuxue Feng
1023Misaki RoysterJapan2026-06-01Feltz Printing Service NEW17Bernardo Dominic
1024Silvio SlusarskiArgentina2026-05-07Commercial Press QUALIFIED0Anna Fali
1025Wickens NestleIndia2026-05-18King, Christopher A Esq RENEWAL5Stephen Shaw
1026Izzy GarufiFrance2026-05-17Feiner Bros QUALIFIED14Ioni Bowcher
1027Deepesh ChuiItaly2026-05-31Truhlar And Truhlar Attys UNQUALIFIED52Onyama Limba
1028Aruna FigeroaJapan2026-05-18Benton, John B Jr RENEWAL12Stephen Shaw
1029Aruna FigeroaGermany2026-05-27Dorl, James J Esq RENEWAL41Amy Elsner
1030Aruna FigeroaArgentina2026-05-22Feltz Printing Service RENEWAL92Asiya Javayant
1031Maria MarrierCanada2026-05-11Buckley Miller Wright QUALIFIED68Anna Fali
1032Greenwood BologniaFrance2026-05-12Dorl, James J Esq NEGOTIATION25Anna Fali
1033Nicolas IturbideCanada2026-05-18Feiner Bros NEW23Elwin Sharvill
1034Aika InouyeFrance2026-05-08Chanay, Jeffrey A Esq QUALIFIED88Xuxue Feng
1035Antonio CaudyArgentina2026-05-04Morlong Associates RENEWAL72Ioni Bowcher
1036Claire TollnerUnited Kingdom2026-05-06King, Christopher A Esq NEGOTIATION59Ioni Bowcher
1037Greenwood BologniaItaly2026-05-07Feiner Bros UNQUALIFIED31Amy Elsner
1038Mayumi KolmetzItaly2026-05-15King, Christopher A Esq QUALIFIED74Xuxue Feng
1039Greenwood BologniaCanada2026-05-25Rousseaux, Michael Esq UNQUALIFIED57Bernardo Dominic
1040Leon OldroydIndia2026-05-28Commercial Press UNQUALIFIED29Amy Elsner
1041Jennifer AmigonJapan2026-05-18Chanay, Jeffrey A Esq PROPOSAL16Ivan Magalhaes
1042Costa DilliardIndia2026-05-25Printing Dimensions UNQUALIFIED68Amy Elsner
1043Juan WieserRussia2026-05-20Buckley Miller Wright PROPOSAL7Ivan Magalhaes
1044James ButtRussia2026-05-18Chemel, James L Cpa RENEWAL59Amy Elsner
1045Maria MarrierItaly2026-05-09Buckley Miller Wright NEGOTIATION92Xuxue Feng
1046Leja CaldareraUnited Kingdom2026-05-21Truhlar And Truhlar Attys QUALIFIED85Anna Fali
1047Emily WhobreyGermany2026-05-13Truhlar And Truhlar Attys NEGOTIATION38Anna Fali
1048Jennifer AmigonCanada2026-05-25Morlong Associates UNQUALIFIED80Onyama Limba
1049Johnson SergiFrance2026-05-14Feiner Bros NEGOTIATION40Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Claire TollnerArgentinaIvan Magalhaes NEGOTIATION
Greenwood BologniaIndiaStephen Shaw QUALIFIED
Izzy GarufiFranceAsiya Javayant UNQUALIFIED
Julie StensethArgentinaXuxue Feng UNQUALIFIED
Deepesh ChuiCanadaIvan Magalhaes UNQUALIFIED
Emily WhobreyBrazilOnyama Limba QUALIFIED
Murillo MaletRussiaElwin Sharvill NEGOTIATION
Darci PoquetteItalyElwin Sharvill UNQUALIFIED
Aditya KuskoBrazilIoni Bowcher RENEWAL
Francesco ShinkoCanadaStephen Shaw QUALIFIED
Clifford RimJapanElwin Sharvill NEGOTIATION
Julie StensethFranceIoni Bowcher NEW
Maisha RulapaughGermanyIoni Bowcher NEW
Tony FollerAustraliaAsiya Javayant RENEWAL
Emily WhobreyArgentinaAnna Fali RENEWAL
Mayumi KolmetzBrazilAsiya Javayant UNQUALIFIED
Jeanfrancois VenereCanadaElwin Sharvill NEW
Deepesh ChuiArgentinaBernardo Dominic PROPOSAL
Antonio CaudySpainIoni Bowcher UNQUALIFIED
Murillo MaletFranceAnna Fali UNQUALIFIED
Kadeem FlosiGermanyStephen Shaw QUALIFIED
Deepesh ChuiSpainIvan Magalhaes NEW
Faith GillianArgentinaOnyama Limba UNQUALIFIED
Mujtaba NickaIndiaXuxue Feng QUALIFIED
Jeanfrancois VenereJapanXuxue Feng NEGOTIATION
Izzy GarufiIndiaAsiya Javayant UNQUALIFIED
Murillo MaletIndiaAmy Elsner NEW
Maria MarrierFranceAsiya Javayant NEW
Alejandro PerinArgentinaBernardo Dominic PROPOSAL
Costa DilliardSpainIoni Bowcher NEGOTIATION
Cody SaylorsAustraliaXuxue Feng UNQUALIFIED
Jones VocelkaItalyAmy Elsner QUALIFIED
Claire TollnerJapanBernardo Dominic RENEWAL
Morrow RutaUnited KingdomAnna Fali RENEWAL
Silvio SlusarskiArgentinaBernardo Dominic NEGOTIATION
Murillo MaletGermanyStephen Shaw UNQUALIFIED
Octavia MaletItalyIoni Bowcher UNQUALIFIED
Jeanfrancois VenereRussiaXuxue Feng QUALIFIED
Adams MorascaFranceAnna Fali PROPOSAL
Chavez BriddickRussiaAsiya Javayant NEGOTIATION
Francesco ShinkoBrazilIoni Bowcher QUALIFIED
Murillo MaletFranceElwin Sharvill RENEWAL
Maria MarrierBrazilXuxue Feng NEW
Kaitlin OstroskyGermanyAsiya Javayant QUALIFIED
Mayumi KolmetzGermanyAsiya Javayant QUALIFIED
Darci PoquetteArgentinaXuxue Feng QUALIFIED
Kadeem FlosiArgentinaIoni Bowcher RENEWAL
Alejandro PerinFranceElwin Sharvill RENEWAL
Kaitlin OstroskyCanadaBernardo Dominic UNQUALIFIED
Jones VocelkaAustraliaAmy Elsner RENEWAL
Frozen Columns
Name
James Butt
Silvio Slusarski
Wickens Nestle
Nicolas Iturbide
Chavez Briddick
Aruna Figeroa
Stacey Maclead
Octavia Malet
Antonio Caudy
Jefferson Schemmer
Rodrigues Campain
Francesco Shinko
Kadeem Flosi
Clifford Rim
Octavia Malet
Juan Wieser
Sinclair Waycott
Ricardo Gaucho
Kaitlin Ostrosky
Tony Foller
Octavia Malet
Isabel Bowley
Maria Marrier
Antonio Caudy
Emily Whobrey
Munro Ferencz
Ivar Paprocki
Leon Oldroyd
Nicolas Iturbide
Mujtaba Nicka
James Butt
Juan Wieser
Jeanfrancois Venere
Emily Whobrey
Smith Glick
Emily Whobrey
Leja Caldarera
Maisha Rulapaugh
Maria Marrier
Francesco Shinko
Julie Stenseth
Mujtaba Nicka
Stacey Maclead
Wickens Nestle
Cody Saylors
Munro Ferencz
Deepesh Chui
Ricardo Gaucho
Misaki Royster
Sinclair Waycott
IdCountryDate
1000Japan2026-05-21
1001France2026-05-18
1002India2026-05-15
1003India2026-05-21
1004United Kingdom2026-05-26
1005Japan2026-05-23
1006India2026-05-17
1007Brazil2026-05-05
1008Canada2026-05-28
1009Canada2026-05-21
1010Japan2026-05-30
1011India2026-05-25
1012Australia2026-05-11
1013Australia2026-05-14
1014Germany2026-05-14
1015Argentina2026-05-17
1016India2026-06-02
1017United Kingdom2026-05-24
1018France2026-05-18
1019Argentina2026-05-30
1020Japan2026-05-12
1021Spain2026-05-29
1022France2026-05-27
1023Brazil2026-05-30
1024Russia2026-05-04
1025Germany2026-05-22
1026Germany2026-05-16
1027Spain2026-05-17
1028Argentina2026-05-24
1029Spain2026-05-18
1030Russia2026-05-17
1031India2026-05-18
1032Brazil2026-05-15
1033Canada2026-05-23
1034France2026-05-16
1035Germany2026-05-15
1036Australia2026-05-20
1037Italy2026-05-26
1038Russia2026-05-25
1039Japan2026-05-22
1040Argentina2026-05-05
1041Spain2026-05-15
1042Canada2026-05-28
1043Italy2026-05-04
1044United Kingdom2026-05-31
1045India2026-05-07
1046Germany2026-05-09
1047Canada2026-05-06
1048Argentina2026-05-18
1049Argentina2026-05-28

On-Demand Data

NameIdCountryDate
Arvin Albares1000Japan2026-05-12
Darci Poquette1001Germany2026-05-21
Aika Inouye1002Australia2026-05-07
Murillo Malet1003India2026-05-29
Emily Whobrey1004Spain2026-05-09
Ivar Paprocki1005Japan2026-05-28
Claire Tollner1006Russia2026-05-05
Octavia Malet1007Italy2026-06-02
Arvin Albares1008India2026-05-30
Nicolas Iturbide1009Canada2026-05-12
Clifford Rim1010Brazil2026-05-14
Smith Glick1011Russia2026-05-17
Deepesh Chui1012Australia2026-06-01
Deepesh Chui1013France2026-05-09
Emily Whobrey1014Russia2026-05-08
Tony Foller1015Argentina2026-05-14
Misaki Royster1016Japan2026-05-16
Misaki Royster1017Japan2026-06-01
Octavia Malet1018Argentina2026-05-20
David Darakjy1019Spain2026-05-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia MaletUnited KingdomAsiya Javayant RENEWAL
Francesco ShinkoFranceXuxue Feng NEGOTIATION
Antonio CaudyFranceAnna Fali RENEWAL
Salvatore StockhamJapanBernardo Dominic PROPOSAL
Greenwood BologniaIndiaAsiya Javayant RENEWAL
Ricardo GauchoJapanStephen Shaw UNQUALIFIED
Jeanfrancois VenereSpainStephen Shaw RENEWAL
Aruna FigeroaRussiaBernardo Dominic RENEWAL
Morrow RutaCanadaOnyama Limba UNQUALIFIED
Nicolas IturbideGermanyIvan Magalhaes NEGOTIATION
Isabel BowleyAustraliaBernardo Dominic NEGOTIATION
Leon OldroydIndiaIvan Magalhaes UNQUALIFIED
Johnson SergiGermanyXuxue Feng UNQUALIFIED
Francesco ShinkoUnited KingdomStephen Shaw QUALIFIED
Juan WieserGermanyBernardo Dominic RENEWAL
Deepesh ChuiArgentinaBernardo Dominic NEGOTIATION
Darci PoquetteBrazilOnyama Limba NEW
Antonio CaudyRussiaIoni Bowcher NEGOTIATION
Maisha RulapaughArgentinaAnna Fali PROPOSAL
Jeanfrancois VenereItalyAnna Fali PROPOSAL
James ButtArgentinaXuxue Feng PROPOSAL
Jefferson SchemmerAustraliaAmy Elsner RENEWAL
Isabel BowleyItalyXuxue Feng RENEWAL
Maisha RulapaughArgentinaBernardo Dominic PROPOSAL
Johnson SergiAustraliaElwin Sharvill PROPOSAL
Munro FerenczItalyOnyama Limba NEGOTIATION
Faith GillianGermanyXuxue Feng NEGOTIATION
Jennifer AmigonItalyAsiya Javayant PROPOSAL
Emily WhobreyBrazilElwin Sharvill NEGOTIATION
Octavia MaletCanadaIoni Bowcher RENEWAL
Emily WhobreyRussiaBernardo Dominic PROPOSAL
Francesco ShinkoItalyBernardo Dominic NEW
Leon OldroydJapanBernardo Dominic UNQUALIFIED
Misaki RoysterRussiaOnyama Limba QUALIFIED
Leon OldroydIndiaStephen Shaw RENEWAL
Misaki RoysterGermanyXuxue Feng UNQUALIFIED
Kaitlin OstroskyGermanyElwin Sharvill UNQUALIFIED
Leon OldroydItalyStephen Shaw UNQUALIFIED
Clifford RimJapanIoni Bowcher QUALIFIED
Cody SaylorsJapanIoni 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>