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
Maria MarrierCanadaBernardo Dominic PROPOSAL
Juan WieserRussiaAmy Elsner QUALIFIED
Jeanfrancois VenereBrazilAsiya Javayant PROPOSAL
Octavia MaletUnited KingdomAnna Fali PROPOSAL
Adams MorascaItalyAnna Fali UNQUALIFIED
Octavia MaletItalyOnyama Limba NEW
Ivar PaprockiItalyAsiya Javayant UNQUALIFIED
Isabel BowleyCanadaIoni Bowcher UNQUALIFIED
Darci PoquetteGermanyBernardo Dominic UNQUALIFIED
Salvatore StockhamFranceElwin Sharvill NEGOTIATION
Sinclair WaycottGermanyIvan Magalhaes RENEWAL
Mujtaba NickaIndiaBernardo Dominic PROPOSAL
Munro FerenczUnited KingdomElwin Sharvill UNQUALIFIED
Kaitlin OstroskyJapanAmy Elsner NEGOTIATION
Aditya KuskoGermanyAnna Fali UNQUALIFIED
Cody SaylorsGermanyXuxue Feng NEGOTIATION
Murillo MaletArgentinaOnyama Limba UNQUALIFIED
Isabel BowleyFranceIoni Bowcher PROPOSAL
Faith GillianIndiaElwin Sharvill NEGOTIATION
Adams MorascaFranceXuxue Feng NEGOTIATION
Munro FerenczArgentinaAmy Elsner UNQUALIFIED
Leja CaldareraAustraliaAmy Elsner NEW
Jennifer AmigonJapanOnyama Limba PROPOSAL
Stacey MacleadAustraliaAsiya Javayant PROPOSAL
Kaitlin OstroskyJapanElwin Sharvill NEW
Antonio CaudyItalyAsiya Javayant RENEWAL
Jeanfrancois VenereRussiaElwin Sharvill PROPOSAL
Darci PoquetteFranceElwin Sharvill QUALIFIED
Ricardo GauchoBrazilIvan Magalhaes UNQUALIFIED
Ivar PaprockiAustraliaElwin Sharvill NEW
Wickens NestleSpainStephen Shaw NEW
Emily WhobreyBrazilAnna Fali UNQUALIFIED
Isabel BowleyIndiaOnyama Limba NEGOTIATION
Adams MorascaJapanXuxue Feng QUALIFIED
Murillo MaletIndiaOnyama Limba UNQUALIFIED
Kaitlin OstroskyIndiaAnna Fali NEGOTIATION
Clifford RimSpainAnna Fali NEGOTIATION
Antonio CaudyArgentinaElwin Sharvill NEW
Chavez BriddickUnited KingdomAsiya Javayant NEW
Rodrigues CampainBrazilOnyama Limba PROPOSAL
Leon OldroydBrazilAnna Fali UNQUALIFIED
Chavez BriddickAustraliaIvan Magalhaes UNQUALIFIED
Aditya KuskoRussiaBernardo Dominic NEW
Octavia MaletFranceAnna Fali RENEWAL
Mujtaba NickaCanadaIoni Bowcher UNQUALIFIED
Costa DilliardIndiaOnyama Limba UNQUALIFIED
Murillo MaletArgentinaIoni Bowcher RENEWAL
Maisha RulapaughFranceElwin Sharvill NEW
James ButtCanadaElwin Sharvill NEW
Jefferson SchemmerIndiaElwin Sharvill NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Adams MorascaBrazilAsiya Javayant RENEWAL
Jeanfrancois VenereCanadaAnna Fali PROPOSAL
Nicolas IturbideAustraliaElwin Sharvill NEW
Alejandro PerinRussiaElwin Sharvill NEW
Costa DilliardArgentinaAsiya Javayant PROPOSAL
Leon OldroydJapanAmy Elsner UNQUALIFIED
Silvio SlusarskiBrazilOnyama Limba PROPOSAL
Darci PoquetteIndiaOnyama Limba NEW
Smith GlickFranceAmy Elsner QUALIFIED
Leja CaldareraFranceStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydAustralia2025-06-24Dorl, James J Esq NEW45Xuxue Feng
1001Kadeem FlosiUnited Kingdom2025-06-16Chanay, Jeffrey A Esq NEW0Ioni Bowcher
1002Jefferson SchemmerGermany2025-06-28Truhlar And Truhlar Attys NEGOTIATION71Stephen Shaw
1003Alejandro PerinArgentina2025-06-21Printing Dimensions RENEWAL14Ioni Bowcher
1004Mujtaba NickaBrazil2025-06-10King, Christopher A Esq QUALIFIED22Ivan Magalhaes
1005Izzy GarufiArgentina2025-06-30Rousseaux, Michael Esq NEW75Asiya Javayant
1006Aika InouyeGermany2025-06-30Chemel, James L Cpa NEGOTIATION92Asiya Javayant
1007Jeanfrancois VenereItaly2025-07-01Morlong Associates PROPOSAL27Ivan Magalhaes
1008Chavez BriddickUnited Kingdom2025-06-13King, Christopher A Esq RENEWAL78Onyama Limba
1009Greenwood BologniaRussia2025-06-18Chanay, Jeffrey A Esq NEW86Asiya Javayant
1010Jefferson SchemmerArgentina2025-06-26Chapman, Ross E Esq PROPOSAL49Bernardo Dominic
1011Munro FerenczJapan2025-06-23Commercial Press UNQUALIFIED40Ivan Magalhaes
1012Mujtaba NickaCanada2025-07-04Buckley Miller Wright PROPOSAL27Xuxue Feng
1013Aditya KuskoArgentina2025-06-15Feiner Bros UNQUALIFIED88Ivan Magalhaes
1014Jeanfrancois VenereRussia2025-06-18Chapman, Ross E Esq NEW44Bernardo Dominic
1015Rodrigues CampainRussia2025-06-10Buckley Miller Wright NEGOTIATION2Stephen Shaw
1016Murillo MaletItaly2025-06-06Feltz Printing Service UNQUALIFIED32Ivan Magalhaes
1017Alejandro PerinItaly2025-06-24Chapman, Ross E Esq RENEWAL85Elwin Sharvill
1018Izzy GarufiCanada2025-06-19Commercial Press RENEWAL94Bernardo Dominic
1019Mujtaba NickaCanada2025-07-01King, Christopher A Esq UNQUALIFIED98Ioni Bowcher
1020James ButtCanada2025-06-19Commercial Press QUALIFIED32Amy Elsner
1021Ricardo GauchoFrance2025-06-15Rangoni Of Florence NEGOTIATION28Ioni Bowcher
1022Mayumi KolmetzFrance2025-07-02Buckley Miller Wright UNQUALIFIED68Ivan Magalhaes
1023Clifford RimItaly2025-06-22Commercial Press NEW53Ioni Bowcher
1024Francesco ShinkoUnited Kingdom2025-06-15Rangoni Of Florence NEGOTIATION35Anna Fali
1025Kaitlin OstroskyGermany2025-06-16Rousseaux, Michael Esq UNQUALIFIED6Ioni Bowcher
1026Aditya KuskoFrance2025-06-21Feltz Printing Service RENEWAL5Stephen Shaw
1027Ashley DoeJapan2025-06-21Printing Dimensions PROPOSAL83Elwin Sharvill
1028Chavez BriddickCanada2025-06-06Buckley Miller Wright NEW46Anna Fali
1029Stacey MacleadGermany2025-06-25Chapman, Ross E Esq NEGOTIATION55Amy Elsner
1030Claire TollnerJapan2025-06-24Benton, John B Jr NEW77Onyama Limba
1031Murillo MaletAustralia2025-06-19Feltz Printing Service RENEWAL86Xuxue Feng
1032Sinclair WaycottSpain2025-06-15Feiner Bros PROPOSAL81Ioni Bowcher
1033Greenwood BologniaFrance2025-06-09Benton, John B Jr NEGOTIATION96Ivan Magalhaes
1034Kadeem FlosiAustralia2025-06-18Commercial Press NEGOTIATION19Bernardo Dominic
1035Jeanfrancois VenereFrance2025-07-05Feiner Bros UNQUALIFIED67Bernardo Dominic
1036Aruna FigeroaCanada2025-06-28Rousseaux, Michael Esq PROPOSAL20Bernardo Dominic
1037Mujtaba NickaIndia2025-06-13Feltz Printing Service PROPOSAL18Asiya Javayant
1038Ivar PaprockiSpain2025-06-28Commercial Press PROPOSAL10Elwin Sharvill
1039Costa DilliardGermany2025-06-22Truhlar And Truhlar Attys QUALIFIED29Stephen Shaw
1040Leon OldroydAustralia2025-06-15Chapman, Ross E Esq PROPOSAL80Anna Fali
1041Sinclair WaycottSpain2025-06-16Rangoni Of Florence NEW4Elwin Sharvill
1042Clifford RimCanada2025-06-26King, Christopher A Esq QUALIFIED0Stephen Shaw
1043James ButtItaly2025-06-06Printing Dimensions PROPOSAL84Ioni Bowcher
1044Kaitlin OstroskyCanada2025-06-12Rangoni Of Florence UNQUALIFIED84Ioni Bowcher
1045Rodrigues CampainBrazil2025-07-01Rangoni Of Florence PROPOSAL88Amy Elsner
1046Darci PoquetteRussia2025-07-02King, Christopher A Esq PROPOSAL35Xuxue Feng
1047Cody SaylorsBrazil2025-06-27Feltz Printing Service QUALIFIED50Stephen Shaw
1048Izzy GarufiFrance2025-06-30Feiner Bros RENEWAL15Anna Fali
1049Greenwood BologniaSpain2025-06-08Commercial Press RENEWAL57Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Emily WhobreySpainStephen Shaw UNQUALIFIED
Emily WhobreyArgentinaElwin Sharvill UNQUALIFIED
Sinclair WaycottBrazilIvan Magalhaes QUALIFIED
Ricardo GauchoAustraliaAsiya Javayant RENEWAL
Mayumi KolmetzAustraliaIvan Magalhaes QUALIFIED
Costa DilliardCanadaElwin Sharvill UNQUALIFIED
Munro FerenczJapanStephen Shaw UNQUALIFIED
Maria MarrierCanadaXuxue Feng RENEWAL
Stacey MacleadIndiaAnna Fali RENEWAL
Aika InouyeSpainIvan Magalhaes QUALIFIED
Antonio CaudyUnited KingdomBernardo Dominic NEW
Juan WieserCanadaStephen Shaw QUALIFIED
Wickens NestleRussiaIoni Bowcher PROPOSAL
Jennifer AmigonRussiaIoni Bowcher QUALIFIED
Cody SaylorsCanadaStephen Shaw PROPOSAL
Antonio CaudyItalyAnna Fali PROPOSAL
Cody SaylorsBrazilIvan Magalhaes NEGOTIATION
Aruna FigeroaCanadaOnyama Limba UNQUALIFIED
Maisha RulapaughRussiaAsiya Javayant RENEWAL
Mujtaba NickaIndiaBernardo Dominic RENEWAL
Aika InouyeArgentinaIvan Magalhaes NEGOTIATION
Aditya KuskoJapanAsiya Javayant UNQUALIFIED
Arvin AlbaresSpainIoni Bowcher UNQUALIFIED
Murillo MaletFranceXuxue Feng PROPOSAL
Murillo MaletAustraliaOnyama Limba PROPOSAL
Tony FollerJapanIoni Bowcher RENEWAL
Chavez BriddickCanadaIoni Bowcher PROPOSAL
Kaitlin OstroskyRussiaIoni Bowcher PROPOSAL
Morrow RutaSpainXuxue Feng QUALIFIED
Rodrigues CampainIndiaXuxue Feng UNQUALIFIED
Isabel BowleyFranceIoni Bowcher UNQUALIFIED
Maria MarrierItalyXuxue Feng RENEWAL
Nicolas IturbideCanadaIvan Magalhaes RENEWAL
Salvatore StockhamItalyStephen Shaw PROPOSAL
James ButtCanadaElwin Sharvill QUALIFIED
Sinclair WaycottBrazilIoni Bowcher UNQUALIFIED
Greenwood BologniaRussiaStephen Shaw QUALIFIED
James ButtArgentinaAnna Fali PROPOSAL
Aditya KuskoJapanBernardo Dominic UNQUALIFIED
Nicolas IturbideArgentinaXuxue Feng RENEWAL
James ButtCanadaAmy Elsner NEGOTIATION
Smith GlickJapanBernardo Dominic UNQUALIFIED
Octavia MaletFranceAmy Elsner PROPOSAL
Nicolas IturbideUnited KingdomIvan Magalhaes UNQUALIFIED
Julie StensethGermanyStephen Shaw PROPOSAL
Jefferson SchemmerItalyElwin Sharvill UNQUALIFIED
Antonio CaudyUnited KingdomStephen Shaw PROPOSAL
Silvio SlusarskiJapanOnyama Limba NEGOTIATION
Chavez BriddickArgentinaAnna Fali RENEWAL
Rodrigues CampainSpainOnyama Limba RENEWAL
Frozen Columns
Name
Ricardo Gaucho
Maisha Rulapaugh
Octavia Malet
Silvio Slusarski
Maria Marrier
Francesco Shinko
Leon Oldroyd
Jennifer Amigon
Isabel Bowley
Emily Whobrey
Nicolas Iturbide
Aditya Kusko
Francesco Shinko
Izzy Garufi
Silvio Slusarski
Octavia Malet
Jeanfrancois Venere
Silvio Slusarski
Wickens Nestle
Ricardo Gaucho
David Darakjy
Jefferson Schemmer
Costa Dilliard
Juan Wieser
Wickens Nestle
Ivar Paprocki
Adams Morasca
Munro Ferencz
Salvatore Stockham
Juan Wieser
Munro Ferencz
Costa Dilliard
Maisha Rulapaugh
Arvin Albares
Murillo Malet
Maria Marrier
Antonio Caudy
Julie Stenseth
Aika Inouye
Tony Foller
Costa Dilliard
Ivar Paprocki
Chavez Briddick
Cody Saylors
Leja Caldarera
Kaitlin Ostrosky
Julie Stenseth
Jennifer Amigon
Octavia Malet
Jennifer Amigon
IdCountryDate
1000India2025-07-02
1001India2025-06-08
1002Australia2025-06-30
1003Brazil2025-06-15
1004Russia2025-07-04
1005Japan2025-07-01
1006Germany2025-07-03
1007Canada2025-06-30
1008India2025-06-17
1009India2025-07-03
1010Brazil2025-06-28
1011Japan2025-06-17
1012India2025-06-26
1013Japan2025-06-07
1014Australia2025-06-06
1015Brazil2025-06-25
1016Japan2025-06-23
1017Canada2025-07-04
1018Spain2025-06-28
1019Brazil2025-06-20
1020Japan2025-06-16
1021Argentina2025-06-29
1022Spain2025-06-07
1023Italy2025-06-20
1024United Kingdom2025-06-09
1025Japan2025-06-10
1026Italy2025-06-17
1027Japan2025-06-17
1028Germany2025-06-21
1029France2025-06-22
1030Japan2025-06-27
1031France2025-06-15
1032Italy2025-06-21
1033Argentina2025-06-27
1034India2025-06-30
1035Russia2025-06-24
1036Italy2025-06-06
1037Australia2025-06-30
1038France2025-07-03
1039Spain2025-07-01
1040Australia2025-06-23
1041Russia2025-06-12
1042United Kingdom2025-06-10
1043Germany2025-06-29
1044Argentina2025-06-11
1045Germany2025-06-30
1046United Kingdom2025-06-16
1047Italy2025-06-27
1048Canada2025-06-22
1049Italy2025-06-30

On-Demand Data

NameIdCountryDate
Wickens Nestle1000Japan2025-06-21
Wickens Nestle1001United Kingdom2025-06-08
Sinclair Waycott1002Argentina2025-06-16
Darci Poquette1003France2025-06-25
Maisha Rulapaugh1004Canada2025-06-14
Kaitlin Ostrosky1005Germany2025-06-09
Mujtaba Nicka1006Japan2025-06-09
Johnson Sergi1007Argentina2025-06-21
Tony Foller1008Argentina2025-06-13
Alejandro Perin1009Canada2025-06-13
Izzy Garufi1010Australia2025-06-16
Jeanfrancois Venere1011India2025-06-14
Octavia Malet1012Russia2025-06-19
Arvin Albares1013United Kingdom2025-06-19
Silvio Slusarski1014Argentina2025-06-07
Kaitlin Ostrosky1015France2025-06-16
Kadeem Flosi1016Argentina2025-07-05
Cody Saylors1017Japan2025-06-16
Nicolas Iturbide1018Italy2025-06-14
Maisha Rulapaugh1019Argentina2025-06-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba NickaRussiaElwin Sharvill UNQUALIFIED
Ashley DoeUnited KingdomAnna Fali NEW
Maria MarrierArgentinaElwin Sharvill NEW
Silvio SlusarskiIndiaElwin Sharvill PROPOSAL
Maria MarrierAustraliaElwin Sharvill RENEWAL
Claire TollnerFranceOnyama Limba QUALIFIED
Claire TollnerArgentinaAnna Fali UNQUALIFIED
Munro FerenczJapanElwin Sharvill NEW
Jefferson SchemmerGermanyStephen Shaw PROPOSAL
Ricardo GauchoFranceIoni Bowcher NEGOTIATION
Antonio CaudyRussiaBernardo Dominic QUALIFIED
Mujtaba NickaSpainStephen Shaw NEW
Misaki RoysterJapanXuxue Feng QUALIFIED
Emily WhobreyFranceIvan Magalhaes UNQUALIFIED
Cody SaylorsSpainXuxue Feng NEW
Jeanfrancois VenereCanadaAmy Elsner PROPOSAL
Faith GillianFranceStephen Shaw NEW
Kadeem FlosiJapanAsiya Javayant NEGOTIATION
Nicolas IturbideJapanAsiya Javayant QUALIFIED
Claire TollnerItalyBernardo Dominic NEW
Deepesh ChuiAustraliaElwin Sharvill NEGOTIATION
Clifford RimAustraliaStephen Shaw RENEWAL
Costa DilliardSpainStephen Shaw NEGOTIATION
Misaki RoysterJapanAnna Fali NEGOTIATION
Faith GillianUnited KingdomIoni Bowcher PROPOSAL
Johnson SergiGermanyStephen Shaw RENEWAL
Juan WieserAustraliaXuxue Feng PROPOSAL
Ashley DoeUnited KingdomStephen Shaw UNQUALIFIED
Aika InouyeArgentinaBernardo Dominic RENEWAL
Stacey MacleadItalyStephen Shaw UNQUALIFIED
Ashley DoeArgentinaAsiya Javayant QUALIFIED
Juan WieserBrazilAsiya Javayant PROPOSAL
Aruna FigeroaArgentinaAsiya Javayant QUALIFIED
Julie StensethSpainIvan Magalhaes RENEWAL
Deepesh ChuiCanadaIvan Magalhaes NEW
Smith GlickArgentinaElwin Sharvill NEW
Deepesh ChuiSpainXuxue Feng NEW
Mujtaba NickaItalyElwin Sharvill RENEWAL
James ButtCanadaIoni Bowcher RENEWAL
Tony FollerAustraliaOnyama Limba NEW

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