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
Kadeem FlosiArgentinaAmy Elsner QUALIFIED
Ashley DoeSpainAmy Elsner QUALIFIED
Juan WieserItalyIoni Bowcher QUALIFIED
Ashley DoeArgentinaElwin Sharvill NEGOTIATION
Kaitlin OstroskyIndiaElwin Sharvill QUALIFIED
Julie StensethUnited KingdomAmy Elsner PROPOSAL
Arvin AlbaresCanadaAsiya Javayant UNQUALIFIED
Jeanfrancois VenereJapanIoni Bowcher PROPOSAL
Ashley DoeUnited KingdomXuxue Feng PROPOSAL
Tony FollerArgentinaBernardo Dominic RENEWAL
Aika InouyeAustraliaStephen Shaw NEGOTIATION
Salvatore StockhamItalyBernardo Dominic UNQUALIFIED
Ashley DoeBrazilOnyama Limba NEW
Cody SaylorsArgentinaAsiya Javayant UNQUALIFIED
Darci PoquetteRussiaElwin Sharvill NEGOTIATION
Aditya KuskoBrazilIoni Bowcher NEW
Darci PoquetteBrazilOnyama Limba NEGOTIATION
Aditya KuskoIndiaIvan Magalhaes NEW
Mujtaba NickaAustraliaIvan Magalhaes UNQUALIFIED
David DarakjyItalyXuxue Feng RENEWAL
Clifford RimCanadaAnna Fali UNQUALIFIED
Arvin AlbaresBrazilAsiya Javayant QUALIFIED
Mujtaba NickaBrazilAmy Elsner RENEWAL
Nicolas IturbideBrazilOnyama Limba PROPOSAL
Chavez BriddickUnited KingdomAnna Fali NEGOTIATION
Maisha RulapaughArgentinaXuxue Feng NEGOTIATION
Jeanfrancois VenereJapanAsiya Javayant NEGOTIATION
Maisha RulapaughBrazilOnyama Limba UNQUALIFIED
Kadeem FlosiItalyIvan Magalhaes RENEWAL
Salvatore StockhamGermanyStephen Shaw UNQUALIFIED
Izzy GarufiJapanIoni Bowcher NEGOTIATION
Kadeem FlosiFranceOnyama Limba NEGOTIATION
Claire TollnerRussiaAsiya Javayant RENEWAL
Silvio SlusarskiJapanStephen Shaw NEGOTIATION
Jefferson SchemmerBrazilOnyama Limba NEGOTIATION
Kadeem FlosiRussiaOnyama Limba QUALIFIED
Tony FollerItalyXuxue Feng PROPOSAL
Rodrigues CampainIndiaBernardo Dominic NEW
Leja CaldareraCanadaOnyama Limba NEGOTIATION
Morrow RutaRussiaBernardo Dominic PROPOSAL
David DarakjyJapanStephen Shaw NEW
Leon OldroydJapanAsiya Javayant UNQUALIFIED
David DarakjyAustraliaIvan Magalhaes NEW
Alejandro PerinGermanyStephen Shaw RENEWAL
Jennifer AmigonJapanIvan Magalhaes UNQUALIFIED
Maria MarrierBrazilAmy Elsner NEGOTIATION
Octavia MaletUnited KingdomIoni Bowcher UNQUALIFIED
Kadeem FlosiIndiaIvan Magalhaes PROPOSAL
Clifford RimIndiaAmy Elsner NEGOTIATION
Greenwood BologniaGermanyElwin Sharvill NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Ashley DoeRussiaAnna Fali RENEWAL
Ashley DoeItalyBernardo Dominic NEW
Morrow RutaJapanElwin Sharvill PROPOSAL
Jennifer AmigonFranceXuxue Feng NEW
Cody SaylorsFranceOnyama Limba NEW
Kadeem FlosiRussiaAsiya Javayant NEW
Aruna FigeroaJapanIvan Magalhaes NEW
Francesco ShinkoItalyAnna Fali NEW
Wickens NestleIndiaAsiya Javayant NEW
Ashley DoeUnited KingdomBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Arvin AlbaresItaly2026-06-10King, Christopher A Esq UNQUALIFIED84Bernardo Dominic
1001Morrow RutaRussia2026-06-17Rangoni Of Florence QUALIFIED7Ivan Magalhaes
1002Ricardo GauchoGermany2026-05-29Rousseaux, Michael Esq PROPOSAL46Ivan Magalhaes
1003Francesco ShinkoRussia2026-06-08Morlong Associates RENEWAL49Bernardo Dominic
1004Wickens NestleItaly2026-06-15Rangoni Of Florence UNQUALIFIED50Bernardo Dominic
1005Maria MarrierUnited Kingdom2026-05-29Buckley Miller Wright PROPOSAL16Anna Fali
1006Sinclair WaycottGermany2026-06-10Chemel, James L Cpa RENEWAL33Onyama Limba
1007Jeanfrancois VenereSpain2026-06-16Dorl, James J Esq UNQUALIFIED1Stephen Shaw
1008Wickens NestleAustralia2026-06-03Dorl, James J Esq RENEWAL24Ioni Bowcher
1009Juan WieserGermany2026-06-12Dorl, James J Esq QUALIFIED98Anna Fali
1010Mujtaba NickaCanada2026-05-27King, Christopher A Esq NEW6Bernardo Dominic
1011Faith GillianRussia2026-06-19Printing Dimensions QUALIFIED75Ivan Magalhaes
1012Smith GlickJapan2026-06-17Feiner Bros PROPOSAL18Ioni Bowcher
1013Maisha RulapaughCanada2026-06-12Chapman, Ross E Esq RENEWAL28Asiya Javayant
1014Cody SaylorsItaly2026-05-25Rangoni Of Florence PROPOSAL57Stephen Shaw
1015Francesco ShinkoItaly2026-06-17Feltz Printing Service RENEWAL48Xuxue Feng
1016Ivar PaprockiIndia2026-05-30Truhlar And Truhlar Attys PROPOSAL46Asiya Javayant
1017Kadeem FlosiFrance2026-05-26Feltz Printing Service NEGOTIATION50Stephen Shaw
1018Munro FerenczJapan2026-05-30Feltz Printing Service UNQUALIFIED35Amy Elsner
1019Arvin AlbaresFrance2026-06-06Feiner Bros RENEWAL70Elwin Sharvill
1020Mayumi KolmetzAustralia2026-06-18Truhlar And Truhlar Attys UNQUALIFIED59Onyama Limba
1021James ButtGermany2026-05-28Rousseaux, Michael Esq NEGOTIATION30Amy Elsner
1022Murillo MaletGermany2026-05-25Truhlar And Truhlar Attys UNQUALIFIED37Amy Elsner
1023Jennifer AmigonItaly2026-06-05Chapman, Ross E Esq QUALIFIED40Anna Fali
1024Leja CaldareraBrazil2026-06-01Chanay, Jeffrey A Esq QUALIFIED12Onyama Limba
1025Nicolas IturbideItaly2026-05-27Feltz Printing Service RENEWAL77Stephen Shaw
1026Darci PoquetteAustralia2026-05-29Feiner Bros RENEWAL4Asiya Javayant
1027Kaitlin OstroskyJapan2026-05-22Feltz Printing Service UNQUALIFIED84Ivan Magalhaes
1028Leja CaldareraAustralia2026-06-18Buckley Miller Wright QUALIFIED74Asiya Javayant
1029Jeanfrancois VenereBrazil2026-05-25King, Christopher A Esq UNQUALIFIED7Bernardo Dominic
1030Ashley DoeBrazil2026-06-10Printing Dimensions PROPOSAL70Onyama Limba
1031Aruna FigeroaJapan2026-06-16Rousseaux, Michael Esq UNQUALIFIED8Stephen Shaw
1032Julie StensethBrazil2026-06-17Rangoni Of Florence QUALIFIED53Xuxue Feng
1033Jeanfrancois VenereFrance2026-06-09Dorl, James J Esq UNQUALIFIED55Onyama Limba
1034Stacey MacleadSpain2026-06-02Rangoni Of Florence NEW7Asiya Javayant
1035Aruna FigeroaIndia2026-06-05Feiner Bros UNQUALIFIED35Ivan Magalhaes
1036Maisha RulapaughJapan2026-06-19Truhlar And Truhlar Attys NEW50Elwin Sharvill
1037Juan WieserRussia2026-06-16Feiner Bros NEW98Onyama Limba
1038Greenwood BologniaSpain2026-05-22Feiner Bros NEW97Ioni Bowcher
1039Jefferson SchemmerItaly2026-06-14Rangoni Of Florence NEW4Elwin Sharvill
1040Greenwood BologniaCanada2026-05-26Buckley Miller Wright QUALIFIED21Anna Fali
1041Salvatore StockhamJapan2026-06-06Benton, John B Jr NEW78Asiya Javayant
1042Ivar PaprockiCanada2026-06-19Chapman, Ross E Esq NEW57Anna Fali
1043Morrow RutaGermany2026-06-18Chanay, Jeffrey A Esq NEW19Bernardo Dominic
1044Rodrigues CampainItaly2026-06-06Benton, John B Jr RENEWAL60Anna Fali
1045Clifford RimCanada2026-06-01Rangoni Of Florence RENEWAL0Ioni Bowcher
1046Maria MarrierUnited Kingdom2026-06-09Truhlar And Truhlar Attys NEGOTIATION39Ioni Bowcher
1047Darci PoquetteJapan2026-06-18Dorl, James J Esq NEGOTIATION29Ivan Magalhaes
1048Ashley DoeRussia2026-05-31Truhlar And Truhlar Attys NEGOTIATION17Anna Fali
1049Clifford RimIndia2026-06-07Chemel, James L Cpa NEGOTIATION52Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Nicolas IturbideUnited KingdomAsiya Javayant NEW
Salvatore StockhamFranceElwin Sharvill RENEWAL
Maria MarrierUnited KingdomElwin Sharvill UNQUALIFIED
Cody SaylorsGermanyElwin Sharvill NEW
Johnson SergiAustraliaBernardo Dominic NEGOTIATION
Leja CaldareraItalyIoni Bowcher QUALIFIED
Adams MorascaItalyIvan Magalhaes UNQUALIFIED
Faith GillianBrazilStephen Shaw PROPOSAL
Maisha RulapaughFranceStephen Shaw RENEWAL
Jeanfrancois VenereIndiaAsiya Javayant NEGOTIATION
Jennifer AmigonItalyElwin Sharvill PROPOSAL
Kadeem FlosiSpainAnna Fali PROPOSAL
Wickens NestleItalyStephen Shaw NEW
Greenwood BologniaUnited KingdomAnna Fali NEGOTIATION
David DarakjyCanadaIoni Bowcher NEGOTIATION
Izzy GarufiUnited KingdomXuxue Feng NEGOTIATION
Sinclair WaycottAustraliaAsiya Javayant NEGOTIATION
Leon OldroydFranceOnyama Limba PROPOSAL
Leja CaldareraCanadaIoni Bowcher QUALIFIED
Morrow RutaAustraliaOnyama Limba QUALIFIED
Octavia MaletGermanyStephen Shaw UNQUALIFIED
Jefferson SchemmerBrazilBernardo Dominic QUALIFIED
Munro FerenczSpainBernardo Dominic RENEWAL
Murillo MaletUnited KingdomAsiya Javayant RENEWAL
Wickens NestleBrazilStephen Shaw RENEWAL
Murillo MaletCanadaBernardo Dominic NEW
Julie StensethItalyElwin Sharvill QUALIFIED
Julie StensethSpainBernardo Dominic UNQUALIFIED
Morrow RutaCanadaStephen Shaw NEGOTIATION
Mujtaba NickaBrazilAmy Elsner PROPOSAL
Morrow RutaCanadaIoni Bowcher QUALIFIED
Ricardo GauchoFranceOnyama Limba PROPOSAL
Juan WieserArgentinaElwin Sharvill NEW
Aditya KuskoIndiaStephen Shaw QUALIFIED
Tony FollerIndiaBernardo Dominic QUALIFIED
Leja CaldareraGermanyOnyama Limba PROPOSAL
Francesco ShinkoRussiaAsiya Javayant UNQUALIFIED
Alejandro PerinBrazilIvan Magalhaes NEW
Aditya KuskoSpainElwin Sharvill QUALIFIED
Arvin AlbaresAustraliaBernardo Dominic QUALIFIED
Misaki RoysterItalyBernardo Dominic RENEWAL
Johnson SergiIndiaStephen Shaw QUALIFIED
Sinclair WaycottFranceAnna Fali UNQUALIFIED
Ivar PaprockiGermanyBernardo Dominic RENEWAL
Ashley DoeAustraliaStephen Shaw QUALIFIED
Kaitlin OstroskyUnited KingdomXuxue Feng NEGOTIATION
James ButtJapanStephen Shaw PROPOSAL
Emily WhobreyFranceStephen Shaw RENEWAL
Aika InouyeFranceOnyama Limba QUALIFIED
Nicolas IturbideRussiaIoni Bowcher NEW
Frozen Columns
Name
Arvin Albares
Rodrigues Campain
Munro Ferencz
Alejandro Perin
Jennifer Amigon
Mayumi Kolmetz
Morrow Ruta
Aruna Figeroa
Smith Glick
Jones Vocelka
Maria Marrier
Wickens Nestle
Claire Tollner
Stacey Maclead
Wickens Nestle
Kadeem Flosi
Ivar Paprocki
Octavia Malet
Ivar Paprocki
Stacey Maclead
Ricardo Gaucho
Deepesh Chui
Misaki Royster
Costa Dilliard
Cody Saylors
Misaki Royster
Jeanfrancois Venere
Faith Gillian
Aika Inouye
Aditya Kusko
Chavez Briddick
Mujtaba Nicka
Chavez Briddick
Leja Caldarera
Sinclair Waycott
Leja Caldarera
Mujtaba Nicka
Antonio Caudy
Aditya Kusko
Jeanfrancois Venere
Emily Whobrey
Jeanfrancois Venere
Darci Poquette
Morrow Ruta
James Butt
Jeanfrancois Venere
Mujtaba Nicka
Francesco Shinko
Kadeem Flosi
Octavia Malet
IdCountryDate
1000Canada2026-06-12
1001Russia2026-06-16
1002France2026-05-31
1003India2026-06-02
1004Germany2026-06-16
1005Brazil2026-06-20
1006Germany2026-06-09
1007India2026-06-13
1008Japan2026-06-07
1009Canada2026-06-10
1010Canada2026-06-20
1011Russia2026-06-20
1012United Kingdom2026-05-28
1013Canada2026-05-30
1014Canada2026-05-29
1015Australia2026-06-12
1016Germany2026-06-04
1017Brazil2026-06-04
1018Australia2026-05-24
1019Brazil2026-05-31
1020Canada2026-06-07
1021Canada2026-06-19
1022United Kingdom2026-06-11
1023Germany2026-06-11
1024Spain2026-06-17
1025India2026-05-27
1026Brazil2026-06-01
1027Argentina2026-05-24
1028Germany2026-06-02
1029Germany2026-06-03
1030Russia2026-06-17
1031Russia2026-05-26
1032Australia2026-06-03
1033Australia2026-06-06
1034Spain2026-06-01
1035Spain2026-06-08
1036United Kingdom2026-06-07
1037Japan2026-06-17
1038United Kingdom2026-06-01
1039Brazil2026-06-08
1040India2026-05-28
1041Brazil2026-06-07
1042Japan2026-06-18
1043Brazil2026-05-23
1044United Kingdom2026-06-17
1045Japan2026-05-26
1046Canada2026-06-13
1047Russia2026-06-02
1048Canada2026-05-31
1049Spain2026-06-15

On-Demand Data

NameIdCountryDate
Ashley Doe1000Australia2026-05-24
Costa Dilliard1001India2026-06-12
Sinclair Waycott1002Germany2026-05-22
Jennifer Amigon1003Canada2026-06-13
Izzy Garufi1004Japan2026-06-03
Octavia Malet1005India2026-05-27
Rodrigues Campain1006Spain2026-05-22
Juan Wieser1007India2026-05-24
Cody Saylors1008Canada2026-06-13
Chavez Briddick1009Canada2026-06-02
Izzy Garufi1010Spain2026-05-31
Ricardo Gaucho1011United Kingdom2026-06-06
Arvin Albares1012Australia2026-06-12
Mujtaba Nicka1013Australia2026-06-14
Alejandro Perin1014United Kingdom2026-06-01
Emily Whobrey1015United Kingdom2026-05-22
Aruna Figeroa1016Argentina2026-06-07
Darci Poquette1017United Kingdom2026-06-11
Johnson Sergi1018Russia2026-06-04
Adams Morasca1019India2026-05-29
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley DoeCanadaAnna Fali UNQUALIFIED
Silvio SlusarskiBrazilElwin Sharvill PROPOSAL
Kadeem FlosiFranceAmy Elsner RENEWAL
Jefferson SchemmerJapanElwin Sharvill NEGOTIATION
Clifford RimIndiaAnna Fali NEW
Leja CaldareraItalyAnna Fali QUALIFIED
Alejandro PerinArgentinaOnyama Limba RENEWAL
Octavia MaletBrazilXuxue Feng NEW
Murillo MaletRussiaAmy Elsner NEW
Morrow RutaIndiaBernardo Dominic UNQUALIFIED
Costa DilliardJapanElwin Sharvill RENEWAL
Juan WieserBrazilOnyama Limba RENEWAL
Jones VocelkaCanadaStephen Shaw PROPOSAL
Mayumi KolmetzGermanyIvan Magalhaes NEGOTIATION
Izzy GarufiItalyXuxue Feng PROPOSAL
Mayumi KolmetzFranceIoni Bowcher RENEWAL
Claire TollnerIndiaBernardo Dominic RENEWAL
Arvin AlbaresCanadaIoni Bowcher UNQUALIFIED
Leja CaldareraIndiaStephen Shaw PROPOSAL
Emily WhobreyUnited KingdomAnna Fali PROPOSAL
Greenwood BologniaItalyXuxue Feng QUALIFIED
Rodrigues CampainArgentinaAmy Elsner NEW
Smith GlickSpainAsiya Javayant NEGOTIATION
Izzy GarufiCanadaXuxue Feng NEW
Sinclair WaycottSpainStephen Shaw QUALIFIED
Faith GillianBrazilOnyama Limba UNQUALIFIED
Munro FerenczUnited KingdomAsiya Javayant PROPOSAL
Silvio SlusarskiRussiaOnyama Limba RENEWAL
Arvin AlbaresBrazilAsiya Javayant NEGOTIATION
Ashley DoeGermanyAnna Fali QUALIFIED
Wickens NestleFranceAnna Fali UNQUALIFIED
Izzy GarufiRussiaBernardo Dominic NEGOTIATION
Mujtaba NickaSpainIoni Bowcher UNQUALIFIED
Arvin AlbaresUnited KingdomBernardo Dominic NEW
Francesco ShinkoAustraliaAmy Elsner QUALIFIED
Nicolas IturbideAustraliaXuxue Feng NEGOTIATION
Morrow RutaUnited KingdomOnyama Limba UNQUALIFIED
Octavia MaletUnited KingdomAnna Fali UNQUALIFIED
Jefferson SchemmerUnited KingdomAnna Fali NEGOTIATION
Aika InouyeCanadaIoni Bowcher QUALIFIED

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