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
Adams MorascaBrazilStephen Shaw NEGOTIATION
Leja CaldareraCanadaAmy Elsner QUALIFIED
Nicolas IturbideArgentinaAnna Fali NEGOTIATION
Maisha RulapaughBrazilBernardo Dominic UNQUALIFIED
Murillo MaletAustraliaIvan Magalhaes PROPOSAL
Johnson SergiUnited KingdomIoni Bowcher RENEWAL
Antonio CaudyJapanOnyama Limba QUALIFIED
Octavia MaletRussiaElwin Sharvill PROPOSAL
Rodrigues CampainBrazilIvan Magalhaes NEGOTIATION
Francesco ShinkoJapanAsiya Javayant QUALIFIED
Stacey MacleadArgentinaAsiya Javayant QUALIFIED
Stacey MacleadArgentinaOnyama Limba NEGOTIATION
Costa DilliardFranceAmy Elsner QUALIFIED
Cody SaylorsCanadaXuxue Feng RENEWAL
Kaitlin OstroskyGermanyBernardo Dominic NEW
Antonio CaudyAustraliaAsiya Javayant QUALIFIED
Julie StensethSpainBernardo Dominic NEGOTIATION
Ricardo GauchoItalyIvan Magalhaes RENEWAL
Deepesh ChuiRussiaAnna Fali RENEWAL
Faith GillianItalyElwin Sharvill RENEWAL
Isabel BowleyBrazilStephen Shaw NEGOTIATION
Faith GillianSpainOnyama Limba NEW
Claire TollnerJapanAsiya Javayant PROPOSAL
Kaitlin OstroskyUnited KingdomIoni Bowcher RENEWAL
Nicolas IturbideItalyIvan Magalhaes RENEWAL
Julie StensethSpainIoni Bowcher UNQUALIFIED
Leon OldroydGermanyXuxue Feng UNQUALIFIED
Ricardo GauchoCanadaIvan Magalhaes PROPOSAL
Jennifer AmigonIndiaBernardo Dominic PROPOSAL
Munro FerenczGermanyIvan Magalhaes NEGOTIATION
Tony FollerBrazilBernardo Dominic RENEWAL
Jefferson SchemmerBrazilAnna Fali QUALIFIED
Faith GillianFranceBernardo Dominic RENEWAL
Mayumi KolmetzArgentinaIvan Magalhaes QUALIFIED
Ashley DoeJapanBernardo Dominic QUALIFIED
Izzy GarufiBrazilOnyama Limba NEW
Silvio SlusarskiBrazilAnna Fali RENEWAL
Maria MarrierItalyBernardo Dominic UNQUALIFIED
Aruna FigeroaCanadaBernardo Dominic RENEWAL
Francesco ShinkoUnited KingdomStephen Shaw NEW
Leon OldroydBrazilElwin Sharvill RENEWAL
Nicolas IturbideIndiaXuxue Feng PROPOSAL
Smith GlickGermanyAmy Elsner QUALIFIED
Munro FerenczJapanElwin Sharvill NEW
Murillo MaletUnited KingdomIvan Magalhaes NEGOTIATION
Aika InouyeSpainAsiya Javayant NEW
Smith GlickUnited KingdomElwin Sharvill QUALIFIED
Aika InouyeGermanyXuxue Feng RENEWAL
Jennifer AmigonJapanIvan Magalhaes RENEWAL
Sinclair WaycottAustraliaOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Claire TollnerGermanyAmy Elsner QUALIFIED
Chavez BriddickIndiaXuxue Feng RENEWAL
Maisha RulapaughUnited KingdomAmy Elsner RENEWAL
Mujtaba NickaSpainAmy Elsner NEW
Maria MarrierIndiaBernardo Dominic NEW
Sinclair WaycottItalyOnyama Limba QUALIFIED
Arvin AlbaresJapanElwin Sharvill NEW
Ivar PaprockiCanadaAnna Fali RENEWAL
Ivar PaprockiItalyAsiya Javayant RENEWAL
Deepesh ChuiSpainXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Greenwood BologniaBrazil2026-05-14Chanay, Jeffrey A Esq RENEWAL6Anna Fali
1001Alejandro PerinArgentina2026-05-05Truhlar And Truhlar Attys NEW12Amy Elsner
1002Jones VocelkaAustralia2026-05-20Feiner Bros PROPOSAL50Bernardo Dominic
1003Faith GillianBrazil2026-05-11Buckley Miller Wright QUALIFIED88Amy Elsner
1004Adams MorascaJapan2026-05-10Feltz Printing Service PROPOSAL29Anna Fali
1005Darci PoquetteIndia2026-05-25Buckley Miller Wright UNQUALIFIED26Xuxue Feng
1006Leja CaldareraSpain2026-05-06Feiner Bros NEW66Bernardo Dominic
1007Arvin AlbaresBrazil2026-05-26Rousseaux, Michael Esq NEW1Elwin Sharvill
1008Jennifer AmigonSpain2026-05-26Feltz Printing Service QUALIFIED94Anna Fali
1009Misaki RoysterUnited Kingdom2026-05-27King, Christopher A Esq NEGOTIATION44Stephen Shaw
1010Munro FerenczCanada2026-05-21Commercial Press PROPOSAL53Onyama Limba
1011Francesco ShinkoUnited Kingdom2026-05-23Rangoni Of Florence NEGOTIATION12Ioni Bowcher
1012Mayumi KolmetzGermany2026-05-08Chapman, Ross E Esq NEW58Bernardo Dominic
1013Alejandro PerinJapan2026-05-29Chemel, James L Cpa NEGOTIATION39Bernardo Dominic
1014Chavez BriddickGermany2026-05-09Rangoni Of Florence PROPOSAL30Asiya Javayant
1015Smith GlickAustralia2026-05-13Printing Dimensions QUALIFIED60Onyama Limba
1016Leja CaldareraFrance2026-05-03Rangoni Of Florence QUALIFIED41Bernardo Dominic
1017Emily WhobreyAustralia2026-05-04Feiner Bros RENEWAL81Xuxue Feng
1018Izzy GarufiAustralia2026-05-27Chanay, Jeffrey A Esq UNQUALIFIED24Stephen Shaw
1019Deepesh ChuiIndia2026-05-27Rousseaux, Michael Esq RENEWAL98Bernardo Dominic
1020Mayumi KolmetzUnited Kingdom2026-05-02Morlong Associates UNQUALIFIED63Stephen Shaw
1021Antonio CaudyUnited Kingdom2026-05-30Chanay, Jeffrey A Esq NEGOTIATION73Bernardo Dominic
1022Leon OldroydJapan2026-05-23Dorl, James J Esq PROPOSAL54Anna Fali
1023Clifford RimIndia2026-05-28Buckley Miller Wright NEGOTIATION58Ioni Bowcher
1024Salvatore StockhamBrazil2026-05-17Commercial Press NEW77Amy Elsner
1025Francesco ShinkoGermany2026-05-01Feltz Printing Service QUALIFIED50Amy Elsner
1026Leon OldroydCanada2026-05-22Chapman, Ross E Esq UNQUALIFIED1Asiya Javayant
1027Maria MarrierArgentina2026-05-06Chemel, James L Cpa NEGOTIATION9Xuxue Feng
1028Wickens NestleAustralia2026-05-17Dorl, James J Esq PROPOSAL84Amy Elsner
1029Murillo MaletItaly2026-05-05Rousseaux, Michael Esq RENEWAL60Elwin Sharvill
1030Izzy GarufiAustralia2026-05-04Rousseaux, Michael Esq NEW96Xuxue Feng
1031Mujtaba NickaAustralia2026-05-04Dorl, James J Esq RENEWAL47Amy Elsner
1032Arvin AlbaresArgentina2026-05-06Rangoni Of Florence NEGOTIATION97Stephen Shaw
1033Stacey MacleadAustralia2026-05-09Truhlar And Truhlar Attys QUALIFIED80Elwin Sharvill
1034Misaki RoysterItaly2026-05-02Morlong Associates UNQUALIFIED99Anna Fali
1035Francesco ShinkoBrazil2026-05-05Chemel, James L Cpa NEW79Elwin Sharvill
1036Aruna FigeroaIndia2026-05-26Rangoni Of Florence RENEWAL32Elwin Sharvill
1037Maisha RulapaughCanada2026-05-22Dorl, James J Esq NEW1Amy Elsner
1038Clifford RimIndia2026-05-19Rousseaux, Michael Esq PROPOSAL48Bernardo Dominic
1039Octavia MaletJapan2026-05-04Chanay, Jeffrey A Esq NEW43Elwin Sharvill
1040Jefferson SchemmerFrance2026-05-09Feiner Bros NEW87Stephen Shaw
1041Morrow RutaItaly2026-05-03Benton, John B Jr QUALIFIED29Anna Fali
1042Faith GillianArgentina2026-05-17Chanay, Jeffrey A Esq UNQUALIFIED76Bernardo Dominic
1043Izzy GarufiCanada2026-05-09Rangoni Of Florence NEGOTIATION11Asiya Javayant
1044Nicolas IturbideFrance2026-05-06Rousseaux, Michael Esq RENEWAL78Xuxue Feng
1045Isabel BowleyItaly2026-05-19Chapman, Ross E Esq NEGOTIATION68Xuxue Feng
1046Mayumi KolmetzGermany2026-05-03Printing Dimensions QUALIFIED55Ioni Bowcher
1047Jeanfrancois VenereRussia2026-05-24Buckley Miller Wright QUALIFIED95Xuxue Feng
1048Aika InouyeRussia2026-05-21Buckley Miller Wright PROPOSAL87Xuxue Feng
1049Mayumi KolmetzSpain2026-05-01Truhlar And Truhlar Attys NEW47Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Leon OldroydUnited KingdomAsiya Javayant NEGOTIATION
Jennifer AmigonRussiaAnna Fali NEW
Maria MarrierGermanyIvan Magalhaes NEGOTIATION
Antonio CaudyAustraliaElwin Sharvill PROPOSAL
Arvin AlbaresItalyStephen Shaw PROPOSAL
Misaki RoysterItalyAsiya Javayant NEGOTIATION
Adams MorascaRussiaAsiya Javayant RENEWAL
Stacey MacleadJapanOnyama Limba QUALIFIED
Arvin AlbaresAustraliaAsiya Javayant PROPOSAL
Salvatore StockhamUnited KingdomStephen Shaw RENEWAL
Faith GillianAustraliaStephen Shaw RENEWAL
Munro FerenczGermanyIoni Bowcher RENEWAL
Cody SaylorsBrazilStephen Shaw UNQUALIFIED
Octavia MaletCanadaIoni Bowcher NEGOTIATION
Wickens NestleAustraliaIoni Bowcher RENEWAL
Emily WhobreySpainBernardo Dominic PROPOSAL
Smith GlickJapanStephen Shaw UNQUALIFIED
Nicolas IturbideAustraliaAsiya Javayant NEGOTIATION
Wickens NestleIndiaIoni Bowcher NEW
Cody SaylorsIndiaStephen Shaw PROPOSAL
Octavia MaletAustraliaIoni Bowcher QUALIFIED
Stacey MacleadBrazilIoni Bowcher RENEWAL
Antonio CaudyCanadaIoni Bowcher QUALIFIED
Leja CaldareraRussiaElwin Sharvill NEGOTIATION
Smith GlickCanadaAsiya Javayant UNQUALIFIED
Cody SaylorsUnited KingdomElwin Sharvill RENEWAL
Sinclair WaycottJapanIvan Magalhaes UNQUALIFIED
Johnson SergiJapanElwin Sharvill QUALIFIED
Alejandro PerinGermanyBernardo Dominic NEW
Ivar PaprockiIndiaOnyama Limba NEW
Mayumi KolmetzArgentinaBernardo Dominic RENEWAL
Johnson SergiFranceAnna Fali RENEWAL
Salvatore StockhamJapanStephen Shaw NEW
Aditya KuskoCanadaAsiya Javayant NEW
Maisha RulapaughJapanIvan Magalhaes UNQUALIFIED
Darci PoquetteJapanIvan Magalhaes QUALIFIED
Aruna FigeroaGermanyIvan Magalhaes UNQUALIFIED
Claire TollnerSpainIvan Magalhaes NEGOTIATION
Aruna FigeroaJapanIoni Bowcher QUALIFIED
Sinclair WaycottRussiaElwin Sharvill RENEWAL
Aruna FigeroaGermanyIoni Bowcher UNQUALIFIED
Sinclair WaycottBrazilElwin Sharvill PROPOSAL
Smith GlickGermanyIoni Bowcher QUALIFIED
James ButtJapanIoni Bowcher UNQUALIFIED
Greenwood BologniaGermanyStephen Shaw PROPOSAL
Stacey MacleadGermanyAsiya Javayant NEGOTIATION
Maisha RulapaughAustraliaIoni Bowcher PROPOSAL
Morrow RutaUnited KingdomXuxue Feng RENEWAL
Smith GlickAustraliaElwin Sharvill NEGOTIATION
Ashley DoeBrazilAnna Fali RENEWAL
Frozen Columns
Name
Arvin Albares
David Darakjy
Tony Foller
Adams Morasca
Ricardo Gaucho
Alejandro Perin
Rodrigues Campain
Chavez Briddick
Tony Foller
Wickens Nestle
Stacey Maclead
Munro Ferencz
Izzy Garufi
Kadeem Flosi
Ashley Doe
Leja Caldarera
Alejandro Perin
Ivar Paprocki
Morrow Ruta
Wickens Nestle
Izzy Garufi
Costa Dilliard
Aditya Kusko
Isabel Bowley
Julie Stenseth
Nicolas Iturbide
Izzy Garufi
Cody Saylors
Emily Whobrey
Morrow Ruta
Chavez Briddick
Aika Inouye
Jeanfrancois Venere
Emily Whobrey
Kaitlin Ostrosky
Claire Tollner
Francesco Shinko
Costa Dilliard
Misaki Royster
Ivar Paprocki
Antonio Caudy
Aditya Kusko
Smith Glick
Silvio Slusarski
Wickens Nestle
Jefferson Schemmer
Murillo Malet
Antonio Caudy
Cody Saylors
Wickens Nestle
IdCountryDate
1000Italy2026-05-06
1001Russia2026-05-24
1002Italy2026-05-08
1003Italy2026-05-19
1004Russia2026-05-21
1005India2026-05-12
1006Argentina2026-05-02
1007Germany2026-05-16
1008Italy2026-05-01
1009Russia2026-05-25
1010Canada2026-05-05
1011Australia2026-05-16
1012Brazil2026-05-21
1013Italy2026-05-01
1014Canada2026-05-18
1015Canada2026-05-24
1016India2026-05-23
1017Germany2026-05-01
1018United Kingdom2026-05-19
1019Italy2026-05-12
1020Brazil2026-05-20
1021United Kingdom2026-05-26
1022Australia2026-05-22
1023Spain2026-05-07
1024Spain2026-05-13
1025France2026-05-18
1026India2026-05-14
1027Australia2026-05-11
1028Germany2026-05-18
1029Russia2026-05-02
1030Brazil2026-05-18
1031Russia2026-05-25
1032Brazil2026-05-05
1033Australia2026-05-22
1034Australia2026-05-06
1035France2026-05-24
1036Italy2026-05-06
1037Japan2026-05-26
1038Spain2026-05-28
1039Japan2026-05-15
1040Brazil2026-05-26
1041Canada2026-05-13
1042Argentina2026-05-15
1043Spain2026-05-15
1044Argentina2026-05-05
1045India2026-05-08
1046Spain2026-05-15
1047United Kingdom2026-05-29
1048Germany2026-05-06
1049United Kingdom2026-05-07

On-Demand Data

NameIdCountryDate
Antonio Caudy1000France2026-05-03
Silvio Slusarski1001Argentina2026-05-30
Rodrigues Campain1002Argentina2026-05-04
Faith Gillian1003United Kingdom2026-05-16
Chavez Briddick1004Germany2026-05-08
Rodrigues Campain1005Spain2026-05-09
Antonio Caudy1006Brazil2026-05-28
Ricardo Gaucho1007Russia2026-05-25
Deepesh Chui1008Brazil2026-05-12
Aika Inouye1009Japan2026-05-09
Arvin Albares1010India2026-05-10
Tony Foller1011Brazil2026-05-06
Leja Caldarera1012United Kingdom2026-05-13
Juan Wieser1013Australia2026-05-08
Silvio Slusarski1014United Kingdom2026-05-12
Izzy Garufi1015Australia2026-05-16
Jefferson Schemmer1016Italy2026-05-21
Darci Poquette1017Japan2026-05-26
Munro Ferencz1018United Kingdom2026-05-02
Misaki Royster1019India2026-05-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith GlickAustraliaAnna Fali RENEWAL
Kaitlin OstroskyJapanAmy Elsner QUALIFIED
Rodrigues CampainGermanyAnna Fali UNQUALIFIED
Juan WieserAustraliaElwin Sharvill QUALIFIED
Costa DilliardItalyOnyama Limba QUALIFIED
Clifford RimCanadaAnna Fali QUALIFIED
Darci PoquetteItalyBernardo Dominic PROPOSAL
Rodrigues CampainAustraliaAmy Elsner NEW
Kadeem FlosiFranceXuxue Feng RENEWAL
Alejandro PerinUnited KingdomIvan Magalhaes QUALIFIED
Kaitlin OstroskyUnited KingdomOnyama Limba QUALIFIED
Juan WieserSpainAnna Fali NEW
Alejandro PerinFranceAsiya Javayant NEW
Nicolas IturbideArgentinaAsiya Javayant RENEWAL
Izzy GarufiBrazilAsiya Javayant UNQUALIFIED
Isabel BowleyItalyIvan Magalhaes PROPOSAL
James ButtUnited KingdomOnyama Limba QUALIFIED
Morrow RutaGermanyXuxue Feng NEGOTIATION
Deepesh ChuiArgentinaAsiya Javayant RENEWAL
Salvatore StockhamGermanyAsiya Javayant PROPOSAL
Mujtaba NickaGermanyIoni Bowcher RENEWAL
Adams MorascaFranceStephen Shaw RENEWAL
Smith GlickSpainAnna Fali RENEWAL
Smith GlickGermanyAnna Fali QUALIFIED
Aditya KuskoGermanyIoni Bowcher UNQUALIFIED
Chavez BriddickItalyIoni Bowcher NEGOTIATION
Ashley DoeJapanElwin Sharvill RENEWAL
Chavez BriddickRussiaAnna Fali QUALIFIED
Alejandro PerinRussiaIvan Magalhaes PROPOSAL
Octavia MaletAustraliaStephen Shaw NEW
Izzy GarufiJapanStephen Shaw UNQUALIFIED
Mayumi KolmetzUnited KingdomAsiya Javayant NEW
Clifford RimIndiaStephen Shaw NEGOTIATION
Wickens NestleArgentinaOnyama Limba RENEWAL
James ButtCanadaAsiya Javayant NEGOTIATION
Rodrigues CampainJapanBernardo Dominic NEGOTIATION
Jeanfrancois VenereIndiaAnna Fali PROPOSAL
Kaitlin OstroskyJapanIoni Bowcher RENEWAL
Misaki RoysterSpainXuxue Feng PROPOSAL
Leja CaldareraArgentinaIvan Magalhaes 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>