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 CaudyCanadaIvan Magalhaes RENEWAL
Isabel BowleyItalyXuxue Feng RENEWAL
Emily WhobreyFranceBernardo Dominic RENEWAL
Jeanfrancois VenereItalyIoni Bowcher NEGOTIATION
Kaitlin OstroskyRussiaAmy Elsner QUALIFIED
Kaitlin OstroskySpainAsiya Javayant NEW
Deepesh ChuiItalyOnyama Limba QUALIFIED
Francesco ShinkoArgentinaOnyama Limba RENEWAL
Aditya KuskoGermanyIoni Bowcher PROPOSAL
Smith GlickArgentinaAnna Fali NEGOTIATION
Aika InouyeSpainIoni Bowcher UNQUALIFIED
Rodrigues CampainJapanElwin Sharvill PROPOSAL
Kadeem FlosiUnited KingdomBernardo Dominic PROPOSAL
Darci PoquetteBrazilXuxue Feng PROPOSAL
Greenwood BologniaCanadaAsiya Javayant NEGOTIATION
Nicolas IturbideBrazilIvan Magalhaes NEGOTIATION
Mujtaba NickaItalyIoni Bowcher NEGOTIATION
Tony FollerRussiaAnna Fali NEW
Claire TollnerFranceIoni Bowcher NEGOTIATION
Johnson SergiIndiaAnna Fali PROPOSAL
Izzy GarufiIndiaStephen Shaw NEGOTIATION
Costa DilliardArgentinaAmy Elsner NEGOTIATION
Aditya KuskoFranceAmy Elsner QUALIFIED
Alejandro PerinItalyOnyama Limba RENEWAL
Sinclair WaycottGermanyElwin Sharvill RENEWAL
Nicolas IturbideBrazilBernardo Dominic NEGOTIATION
Octavia MaletFranceIoni Bowcher UNQUALIFIED
Wickens NestleBrazilIoni Bowcher QUALIFIED
Sinclair WaycottSpainAmy Elsner PROPOSAL
Nicolas IturbideAustraliaAsiya Javayant UNQUALIFIED
Nicolas IturbideJapanElwin Sharvill RENEWAL
Clifford RimArgentinaAmy Elsner NEGOTIATION
Adams MorascaAustraliaAsiya Javayant PROPOSAL
Salvatore StockhamAustraliaElwin Sharvill PROPOSAL
Costa DilliardJapanIoni Bowcher RENEWAL
Leja CaldareraIndiaElwin Sharvill NEGOTIATION
Jennifer AmigonBrazilAnna Fali PROPOSAL
Sinclair WaycottBrazilAsiya Javayant PROPOSAL
Kaitlin OstroskyCanadaAmy Elsner RENEWAL
Misaki RoysterAustraliaIoni Bowcher NEW
Francesco ShinkoBrazilBernardo Dominic NEGOTIATION
Jones VocelkaRussiaAnna Fali UNQUALIFIED
Mayumi KolmetzIndiaIoni Bowcher UNQUALIFIED
Greenwood BologniaJapanOnyama Limba PROPOSAL
Clifford RimIndiaElwin Sharvill UNQUALIFIED
Morrow RutaRussiaIvan Magalhaes UNQUALIFIED
Aruna FigeroaCanadaAnna Fali QUALIFIED
Silvio SlusarskiCanadaIvan Magalhaes NEGOTIATION
Mujtaba NickaIndiaOnyama Limba QUALIFIED
Isabel BowleyAustraliaAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Izzy GarufiBrazilStephen Shaw PROPOSAL
Maria MarrierSpainAsiya Javayant NEW
Chavez BriddickBrazilIoni Bowcher RENEWAL
Jennifer AmigonUnited KingdomAsiya Javayant PROPOSAL
Julie StensethItalyAmy Elsner PROPOSAL
Tony FollerCanadaAmy Elsner NEGOTIATION
Misaki RoysterSpainElwin Sharvill UNQUALIFIED
Octavia MaletIndiaElwin Sharvill PROPOSAL
Jeanfrancois VenereSpainAmy Elsner RENEWAL
Julie StensethArgentinaAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues CampainBrazil2026-04-21Rangoni Of Florence PROPOSAL32Amy Elsner
1001James ButtRussia2026-04-26Rousseaux, Michael Esq RENEWAL72Onyama Limba
1002Clifford RimAustralia2026-05-02Rousseaux, Michael Esq UNQUALIFIED96Ioni Bowcher
1003Isabel BowleyAustralia2026-05-04King, Christopher A Esq UNQUALIFIED29Onyama Limba
1004Emily WhobreyAustralia2026-05-04Buckley Miller Wright PROPOSAL93Elwin Sharvill
1005Misaki RoysterGermany2026-05-15Chanay, Jeffrey A Esq QUALIFIED33Elwin Sharvill
1006Faith GillianJapan2026-05-02Printing Dimensions UNQUALIFIED78Asiya Javayant
1007Isabel BowleyIndia2026-05-10Feiner Bros RENEWAL36Ioni Bowcher
1008Jones VocelkaArgentina2026-04-23Feiner Bros PROPOSAL11Asiya Javayant
1009Leja CaldareraRussia2026-05-04Rangoni Of Florence PROPOSAL18Bernardo Dominic
1010Aika InouyeItaly2026-05-03Commercial Press QUALIFIED51Onyama Limba
1011Cody SaylorsSpain2026-04-20Buckley Miller Wright QUALIFIED27Xuxue Feng
1012Darci PoquetteBrazil2026-04-19Benton, John B Jr UNQUALIFIED95Bernardo Dominic
1013Misaki RoysterBrazil2026-04-17Chapman, Ross E Esq PROPOSAL56Xuxue Feng
1014Darci PoquetteGermany2026-04-26Morlong Associates RENEWAL4Xuxue Feng
1015Leon OldroydCanada2026-05-13Truhlar And Truhlar Attys PROPOSAL65Bernardo Dominic
1016Munro FerenczBrazil2026-04-18Rousseaux, Michael Esq QUALIFIED96Anna Fali
1017Faith GillianIndia2026-04-29King, Christopher A Esq NEW53Stephen Shaw
1018Murillo MaletItaly2026-05-07Benton, John B Jr NEGOTIATION56Ioni Bowcher
1019Stacey MacleadSpain2026-04-29King, Christopher A Esq NEGOTIATION46Elwin Sharvill
1020Munro FerenczAustralia2026-05-09King, Christopher A Esq UNQUALIFIED41Amy Elsner
1021Cody SaylorsFrance2026-05-15Chanay, Jeffrey A Esq QUALIFIED50Bernardo Dominic
1022Munro FerenczCanada2026-05-15Rangoni Of Florence PROPOSAL23Bernardo Dominic
1023Isabel BowleyUnited Kingdom2026-04-16Printing Dimensions NEGOTIATION54Bernardo Dominic
1024Silvio SlusarskiArgentina2026-04-25Chanay, Jeffrey A Esq NEGOTIATION92Onyama Limba
1025Emily WhobreyAustralia2026-04-18Feltz Printing Service UNQUALIFIED53Onyama Limba
1026Maria MarrierFrance2026-04-18Benton, John B Jr UNQUALIFIED45Elwin Sharvill
1027Mayumi KolmetzCanada2026-05-09Benton, John B Jr NEW0Elwin Sharvill
1028Murillo MaletItaly2026-05-13Commercial Press NEW31Anna Fali
1029Mayumi KolmetzArgentina2026-05-08Chanay, Jeffrey A Esq NEW23Ivan Magalhaes
1030Morrow RutaFrance2026-05-13Feiner Bros NEW12Bernardo Dominic
1031Salvatore StockhamJapan2026-04-17Feltz Printing Service NEGOTIATION16Onyama Limba
1032Adams MorascaFrance2026-04-25Chanay, Jeffrey A Esq PROPOSAL91Anna Fali
1033Izzy GarufiAustralia2026-05-07King, Christopher A Esq QUALIFIED8Stephen Shaw
1034Mayumi KolmetzCanada2026-05-11Dorl, James J Esq UNQUALIFIED60Ioni Bowcher
1035Chavez BriddickGermany2026-04-21Feltz Printing Service UNQUALIFIED88Stephen Shaw
1036Maisha RulapaughJapan2026-04-25Chemel, James L Cpa UNQUALIFIED39Ioni Bowcher
1037Ivar PaprockiItaly2026-05-10Rangoni Of Florence NEW94Ioni Bowcher
1038Antonio CaudyArgentina2026-04-21Feltz Printing Service QUALIFIED43Asiya Javayant
1039Jones VocelkaItaly2026-04-30Rangoni Of Florence NEGOTIATION78Xuxue Feng
1040Mayumi KolmetzItaly2026-04-27Rousseaux, Michael Esq QUALIFIED85Stephen Shaw
1041Octavia MaletSpain2026-05-15Commercial Press NEW94Asiya Javayant
1042Antonio CaudyAustralia2026-05-11Feiner Bros UNQUALIFIED67Xuxue Feng
1043Adams MorascaRussia2026-05-04Feiner Bros QUALIFIED13Xuxue Feng
1044Misaki RoysterJapan2026-05-12Truhlar And Truhlar Attys NEW68Stephen Shaw
1045Kadeem FlosiIndia2026-05-06Commercial Press RENEWAL40Anna Fali
1046Maisha RulapaughBrazil2026-05-09Truhlar And Truhlar Attys UNQUALIFIED65Ioni Bowcher
1047Kadeem FlosiItaly2026-05-09Chanay, Jeffrey A Esq RENEWAL90Onyama Limba
1048Wickens NestleJapan2026-04-22Dorl, James J Esq QUALIFIED39Amy Elsner
1049Murillo MaletJapan2026-04-28Dorl, James J Esq UNQUALIFIED40Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Maria MarrierFranceAnna Fali NEW
Cody SaylorsArgentinaAmy Elsner QUALIFIED
Jefferson SchemmerSpainAnna Fali QUALIFIED
Chavez BriddickCanadaIoni Bowcher NEGOTIATION
Jefferson SchemmerBrazilBernardo Dominic RENEWAL
Aruna FigeroaRussiaIvan Magalhaes UNQUALIFIED
Johnson SergiJapanBernardo Dominic PROPOSAL
Chavez BriddickArgentinaAmy Elsner PROPOSAL
Smith GlickArgentinaElwin Sharvill NEW
Ashley DoeArgentinaOnyama Limba NEGOTIATION
Claire TollnerJapanAmy Elsner QUALIFIED
Ashley DoeSpainAmy Elsner PROPOSAL
Emily WhobreyRussiaAsiya Javayant UNQUALIFIED
Isabel BowleyCanadaOnyama Limba PROPOSAL
Cody SaylorsIndiaStephen Shaw UNQUALIFIED
Costa DilliardBrazilBernardo Dominic UNQUALIFIED
Jefferson SchemmerBrazilXuxue Feng NEGOTIATION
Chavez BriddickFranceAsiya Javayant RENEWAL
Murillo MaletArgentinaIvan Magalhaes RENEWAL
Aditya KuskoBrazilAmy Elsner RENEWAL
Ashley DoeFranceOnyama Limba QUALIFIED
Johnson SergiFranceBernardo Dominic QUALIFIED
David DarakjyCanadaIvan Magalhaes NEW
Munro FerenczGermanyIoni Bowcher PROPOSAL
Jones VocelkaIndiaOnyama Limba UNQUALIFIED
Mujtaba NickaUnited KingdomIvan Magalhaes RENEWAL
Maisha RulapaughArgentinaBernardo Dominic QUALIFIED
Kaitlin OstroskyAustraliaAmy Elsner UNQUALIFIED
Julie StensethGermanyAnna Fali NEGOTIATION
Leja CaldareraItalyOnyama Limba NEGOTIATION
Murillo MaletGermanyXuxue Feng QUALIFIED
Chavez BriddickCanadaAsiya Javayant NEW
Antonio CaudyGermanyBernardo Dominic NEGOTIATION
Isabel BowleyItalyAmy Elsner PROPOSAL
Aditya KuskoBrazilIvan Magalhaes RENEWAL
Morrow RutaSpainIoni Bowcher NEW
Adams MorascaSpainBernardo Dominic NEW
Claire TollnerCanadaXuxue Feng QUALIFIED
Stacey MacleadArgentinaXuxue Feng RENEWAL
Adams MorascaAustraliaAsiya Javayant PROPOSAL
Murillo MaletFranceElwin Sharvill PROPOSAL
Johnson SergiRussiaXuxue Feng NEW
Izzy GarufiCanadaElwin Sharvill QUALIFIED
Tony FollerJapanAnna Fali RENEWAL
Julie StensethBrazilAsiya Javayant RENEWAL
Jennifer AmigonJapanOnyama Limba PROPOSAL
Johnson SergiJapanAnna Fali UNQUALIFIED
Aruna FigeroaAustraliaAmy Elsner QUALIFIED
Jones VocelkaGermanyOnyama Limba PROPOSAL
Kadeem FlosiGermanyBernardo Dominic PROPOSAL
Frozen Columns
Name
Isabel Bowley
Rodrigues Campain
Jennifer Amigon
Claire Tollner
Aruna Figeroa
Octavia Malet
Nicolas Iturbide
Faith Gillian
David Darakjy
Wickens Nestle
Juan Wieser
Jennifer Amigon
Claire Tollner
Munro Ferencz
Silvio Slusarski
Aruna Figeroa
Aika Inouye
Murillo Malet
Chavez Briddick
James Butt
Mayumi Kolmetz
Faith Gillian
Salvatore Stockham
Aditya Kusko
Salvatore Stockham
Emily Whobrey
Aika Inouye
Jones Vocelka
Salvatore Stockham
Izzy Garufi
Izzy Garufi
Faith Gillian
Rodrigues Campain
Emily Whobrey
Kadeem Flosi
Chavez Briddick
Rodrigues Campain
Leon Oldroyd
Sinclair Waycott
Claire Tollner
Kadeem Flosi
Claire Tollner
Johnson Sergi
Adams Morasca
Aika Inouye
Darci Poquette
Kadeem Flosi
Darci Poquette
Juan Wieser
Wickens Nestle
IdCountryDate
1000Australia2026-05-07
1001Australia2026-05-10
1002Italy2026-04-25
1003Brazil2026-05-04
1004Spain2026-05-11
1005Australia2026-05-04
1006Germany2026-05-15
1007Brazil2026-04-24
1008Argentina2026-04-27
1009Italy2026-04-29
1010Spain2026-05-14
1011United Kingdom2026-04-16
1012Canada2026-04-24
1013Spain2026-05-02
1014Argentina2026-05-09
1015Italy2026-05-08
1016Brazil2026-04-27
1017Germany2026-05-14
1018India2026-05-06
1019Brazil2026-04-30
1020Italy2026-04-25
1021United Kingdom2026-04-22
1022Brazil2026-05-02
1023France2026-04-26
1024France2026-04-26
1025Germany2026-05-10
1026India2026-05-13
1027Canada2026-04-29
1028Japan2026-04-21
1029Argentina2026-04-29
1030Canada2026-05-12
1031Germany2026-04-21
1032Australia2026-05-12
1033Argentina2026-05-01
1034Argentina2026-04-20
1035India2026-05-05
1036Japan2026-05-12
1037Russia2026-04-26
1038Germany2026-04-30
1039Germany2026-05-06
1040Australia2026-04-25
1041Brazil2026-04-24
1042Brazil2026-05-08
1043Canada2026-05-06
1044Russia2026-04-19
1045Australia2026-05-06
1046Australia2026-04-18
1047Russia2026-04-29
1048Spain2026-05-11
1049Spain2026-04-17

On-Demand Data

NameIdCountryDate
Clifford Rim1000Japan2026-04-16
Jeanfrancois Venere1001Brazil2026-05-09
James Butt1002Brazil2026-04-18
Kaitlin Ostrosky1003Australia2026-05-08
Ricardo Gaucho1004Brazil2026-04-29
Adams Morasca1005France2026-05-10
Leon Oldroyd1006Brazil2026-05-06
Mayumi Kolmetz1007Argentina2026-05-12
Jefferson Schemmer1008Brazil2026-05-07
Jeanfrancois Venere1009Russia2026-04-25
Antonio Caudy1010Germany2026-05-02
Stacey Maclead1011Canada2026-04-28
Aditya Kusko1012Germany2026-04-22
Costa Dilliard1013Russia2026-05-08
Antonio Caudy1014France2026-05-10
Leon Oldroyd1015Italy2026-05-09
Adams Morasca1016Japan2026-04-17
Cody Saylors1017Japan2026-05-14
Alejandro Perin1018Brazil2026-05-13
Kadeem Flosi1019United Kingdom2026-05-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Murillo MaletIndiaIoni Bowcher QUALIFIED
Mayumi KolmetzFranceAmy Elsner NEGOTIATION
Munro FerenczUnited KingdomElwin Sharvill NEW
Johnson SergiJapanIoni Bowcher UNQUALIFIED
Murillo MaletAustraliaStephen Shaw QUALIFIED
Cody SaylorsCanadaStephen Shaw NEGOTIATION
Maisha RulapaughItalyOnyama Limba PROPOSAL
Cody SaylorsGermanyXuxue Feng PROPOSAL
Ricardo GauchoArgentinaOnyama Limba UNQUALIFIED
Silvio SlusarskiFranceAnna Fali NEGOTIATION
Emily WhobreyUnited KingdomIvan Magalhaes QUALIFIED
Alejandro PerinJapanIvan Magalhaes PROPOSAL
Silvio SlusarskiJapanAmy Elsner NEGOTIATION
Cody SaylorsItalyIoni Bowcher NEW
Stacey MacleadArgentinaAmy Elsner QUALIFIED
Wickens NestleSpainIvan Magalhaes RENEWAL
Julie StensethGermanyAnna Fali RENEWAL
Maria MarrierJapanOnyama Limba QUALIFIED
Faith GillianBrazilIvan Magalhaes RENEWAL
Murillo MaletRussiaIvan Magalhaes NEW
Octavia MaletBrazilIoni Bowcher NEGOTIATION
Alejandro PerinItalyIvan Magalhaes UNQUALIFIED
Faith GillianArgentinaAmy Elsner UNQUALIFIED
Murillo MaletArgentinaAsiya Javayant PROPOSAL
Maisha RulapaughArgentinaIvan Magalhaes NEW
Alejandro PerinItalyElwin Sharvill QUALIFIED
Ivar PaprockiCanadaAsiya Javayant NEGOTIATION
Clifford RimJapanOnyama Limba NEW
Mayumi KolmetzJapanIvan Magalhaes NEW
Ashley DoeUnited KingdomXuxue Feng QUALIFIED
Leon OldroydItalyOnyama Limba PROPOSAL
Octavia MaletJapanIoni Bowcher QUALIFIED
Rodrigues CampainJapanAnna Fali NEGOTIATION
Leon OldroydIndiaXuxue Feng NEGOTIATION
Leon OldroydItalyElwin Sharvill UNQUALIFIED
Antonio CaudyBrazilOnyama Limba NEGOTIATION
Sinclair WaycottSpainAnna Fali PROPOSAL
Maisha RulapaughArgentinaOnyama Limba PROPOSAL
Jefferson SchemmerIndiaAnna Fali PROPOSAL
Silvio SlusarskiFranceXuxue Feng RENEWAL

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