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
Murillo MaletSpainAnna Fali QUALIFIED
Ashley DoeRussiaElwin Sharvill RENEWAL
Clifford RimGermanyIoni Bowcher QUALIFIED
Maria MarrierFranceIoni Bowcher QUALIFIED
Claire TollnerItalyAmy Elsner NEW
Emily WhobreyAustraliaIvan Magalhaes NEGOTIATION
Kadeem FlosiCanadaAmy Elsner UNQUALIFIED
Tony FollerAustraliaAnna Fali QUALIFIED
Octavia MaletIndiaAnna Fali PROPOSAL
Adams MorascaRussiaAnna Fali QUALIFIED
Alejandro PerinAustraliaElwin Sharvill PROPOSAL
Jennifer AmigonFranceIoni Bowcher NEGOTIATION
Deepesh ChuiJapanAmy Elsner UNQUALIFIED
Aika InouyeSpainAsiya Javayant QUALIFIED
Mujtaba NickaUnited KingdomStephen Shaw UNQUALIFIED
Wickens NestleCanadaOnyama Limba QUALIFIED
Kaitlin OstroskyAustraliaIvan Magalhaes PROPOSAL
Maria MarrierUnited KingdomBernardo Dominic NEW
Faith GillianBrazilElwin Sharvill NEGOTIATION
Adams MorascaRussiaXuxue Feng NEW
Johnson SergiAustraliaIvan Magalhaes NEW
Cody SaylorsRussiaAnna Fali NEW
David DarakjyArgentinaAnna Fali NEGOTIATION
Misaki RoysterAustraliaXuxue Feng NEW
Aruna FigeroaFranceAmy Elsner RENEWAL
Juan WieserSpainBernardo Dominic NEW
Antonio CaudyFranceAmy Elsner RENEWAL
Arvin AlbaresRussiaAsiya Javayant PROPOSAL
Sinclair WaycottJapanAnna Fali NEGOTIATION
Leja CaldareraAustraliaBernardo Dominic NEW
Kaitlin OstroskySpainAmy Elsner NEGOTIATION
Jones VocelkaAustraliaElwin Sharvill QUALIFIED
Mujtaba NickaAustraliaBernardo Dominic NEW
Jeanfrancois VenereArgentinaAmy Elsner NEGOTIATION
Greenwood BologniaFranceBernardo Dominic NEW
Nicolas IturbideUnited KingdomAnna Fali QUALIFIED
Murillo MaletFranceAnna Fali PROPOSAL
Aika InouyeArgentinaAsiya Javayant PROPOSAL
Adams MorascaRussiaElwin Sharvill NEGOTIATION
Kaitlin OstroskyIndiaIvan Magalhaes UNQUALIFIED
Kaitlin OstroskyJapanBernardo Dominic QUALIFIED
Claire TollnerItalyBernardo Dominic NEGOTIATION
Ivar PaprockiArgentinaOnyama Limba PROPOSAL
Aditya KuskoItalyAsiya Javayant QUALIFIED
Ricardo GauchoItalyIvan Magalhaes NEGOTIATION
Misaki RoysterIndiaAnna Fali PROPOSAL
Ivar PaprockiArgentinaAsiya Javayant NEW
Smith GlickAustraliaIoni Bowcher NEW
Tony FollerGermanyXuxue Feng PROPOSAL
Darci PoquetteRussiaAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Darci PoquetteRussiaAmy Elsner NEW
Maisha RulapaughIndiaOnyama Limba QUALIFIED
Chavez BriddickSpainIvan Magalhaes PROPOSAL
Greenwood BologniaGermanyOnyama Limba QUALIFIED
Stacey MacleadSpainAnna Fali RENEWAL
Emily WhobreyFranceStephen Shaw PROPOSAL
Mayumi KolmetzIndiaBernardo Dominic QUALIFIED
Morrow RutaAustraliaStephen Shaw NEGOTIATION
Salvatore StockhamRussiaAmy Elsner QUALIFIED
Claire TollnerAustraliaAsiya Javayant QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia MaletCanada2026-04-18Printing Dimensions PROPOSAL78Elwin Sharvill
1001Aditya KuskoUnited Kingdom2026-04-11Chemel, James L Cpa RENEWAL8Xuxue Feng
1002Mayumi KolmetzIndia2026-04-01Truhlar And Truhlar Attys UNQUALIFIED84Amy Elsner
1003Greenwood BologniaBrazil2026-04-29Truhlar And Truhlar Attys UNQUALIFIED77Onyama Limba
1004Aruna FigeroaBrazil2026-04-11Chanay, Jeffrey A Esq NEW8Ioni Bowcher
1005Mayumi KolmetzAustralia2026-04-26Feltz Printing Service PROPOSAL14Onyama Limba
1006Adams MorascaSpain2026-04-03Benton, John B Jr NEW26Bernardo Dominic
1007Costa DilliardIndia2026-04-16Feiner Bros NEGOTIATION86Stephen Shaw
1008Darci PoquetteIndia2026-04-13Rangoni Of Florence QUALIFIED50Xuxue Feng
1009Salvatore StockhamJapan2026-04-08Chapman, Ross E Esq NEGOTIATION32Elwin Sharvill
1010Mayumi KolmetzUnited Kingdom2026-04-13Chemel, James L Cpa NEGOTIATION97Amy Elsner
1011Arvin AlbaresJapan2026-04-27Buckley Miller Wright PROPOSAL32Asiya Javayant
1012Emily WhobreyCanada2026-04-30Feltz Printing Service PROPOSAL1Ivan Magalhaes
1013Ivar PaprockiRussia2026-04-07Morlong Associates RENEWAL24Bernardo Dominic
1014Aruna FigeroaJapan2026-04-13Chanay, Jeffrey A Esq QUALIFIED49Ivan Magalhaes
1015Chavez BriddickUnited Kingdom2026-04-27Rangoni Of Florence RENEWAL81Onyama Limba
1016Faith GillianArgentina2026-04-18Truhlar And Truhlar Attys RENEWAL81Ivan Magalhaes
1017Ashley DoeGermany2026-04-01Rangoni Of Florence QUALIFIED83Ioni Bowcher
1018Aditya KuskoSpain2026-04-20Rangoni Of Florence PROPOSAL36Bernardo Dominic
1019Clifford RimUnited Kingdom2026-04-10Dorl, James J Esq NEW97Amy Elsner
1020Faith GillianUnited Kingdom2026-04-11Feiner Bros UNQUALIFIED40Onyama Limba
1021Maisha RulapaughFrance2026-04-08Feiner Bros RENEWAL84Elwin Sharvill
1022Julie StensethArgentina2026-04-01Feiner Bros NEW12Ivan Magalhaes
1023Greenwood BologniaAustralia2026-04-24Feltz Printing Service NEW37Stephen Shaw
1024Mujtaba NickaIndia2026-04-15Commercial Press UNQUALIFIED98Amy Elsner
1025Costa DilliardBrazil2026-04-15Rousseaux, Michael Esq PROPOSAL91Ivan Magalhaes
1026Alejandro PerinJapan2026-04-16Feiner Bros UNQUALIFIED15Stephen Shaw
1027Adams MorascaItaly2026-04-12Benton, John B Jr NEGOTIATION12Ivan Magalhaes
1028Mayumi KolmetzItaly2026-04-12Rangoni Of Florence UNQUALIFIED73Amy Elsner
1029Kadeem FlosiIndia2026-04-11Printing Dimensions PROPOSAL4Elwin Sharvill
1030James ButtUnited Kingdom2026-04-27Chapman, Ross E Esq RENEWAL23Elwin Sharvill
1031Juan WieserRussia2026-04-13Benton, John B Jr NEGOTIATION86Onyama Limba
1032Arvin AlbaresJapan2026-04-26Chemel, James L Cpa NEGOTIATION59Bernardo Dominic
1033Jones VocelkaRussia2026-04-05Printing Dimensions NEGOTIATION7Elwin Sharvill
1034Maisha RulapaughRussia2026-04-07Feiner Bros UNQUALIFIED51Amy Elsner
1035Maisha RulapaughJapan2026-04-16Dorl, James J Esq NEW9Asiya Javayant
1036Darci PoquetteFrance2026-04-18Printing Dimensions NEGOTIATION76Amy Elsner
1037Aditya KuskoIndia2026-04-21Rousseaux, Michael Esq RENEWAL39Asiya Javayant
1038Nicolas IturbideUnited Kingdom2026-04-20Truhlar And Truhlar Attys PROPOSAL40Xuxue Feng
1039Chavez BriddickGermany2026-04-02Dorl, James J Esq NEGOTIATION82Anna Fali
1040Silvio SlusarskiGermany2026-04-10Chemel, James L Cpa NEGOTIATION11Stephen Shaw
1041Sinclair WaycottSpain2026-04-14King, Christopher A Esq QUALIFIED71Bernardo Dominic
1042Nicolas IturbideItaly2026-04-24Chapman, Ross E Esq NEGOTIATION74Anna Fali
1043Emily WhobreyRussia2026-04-02Rangoni Of Florence NEGOTIATION24Elwin Sharvill
1044Johnson SergiCanada2026-04-08Commercial Press RENEWAL38Amy Elsner
1045Leja CaldareraFrance2026-04-30Chanay, Jeffrey A Esq QUALIFIED42Ivan Magalhaes
1046Wickens NestleJapan2026-04-21Dorl, James J Esq UNQUALIFIED9Anna Fali
1047Ivar PaprockiBrazil2026-04-14Rangoni Of Florence PROPOSAL78Amy Elsner
1048Jefferson SchemmerItaly2026-04-05Feiner Bros NEW91Ioni Bowcher
1049Aditya KuskoItaly2026-04-16Chanay, Jeffrey A Esq NEW88Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Aika InouyeJapanAnna Fali QUALIFIED
Adams MorascaIndiaOnyama Limba PROPOSAL
Kadeem FlosiArgentinaAsiya Javayant UNQUALIFIED
Isabel BowleyUnited KingdomAmy Elsner QUALIFIED
Johnson SergiItalyAnna Fali NEGOTIATION
Murillo MaletFranceAmy Elsner NEW
Aika InouyeRussiaOnyama Limba NEGOTIATION
Izzy GarufiIndiaXuxue Feng NEW
Rodrigues CampainUnited KingdomAnna Fali QUALIFIED
Darci PoquetteCanadaXuxue Feng NEGOTIATION
Emily WhobreyCanadaXuxue Feng PROPOSAL
Jennifer AmigonItalyXuxue Feng UNQUALIFIED
Isabel BowleyJapanAsiya Javayant UNQUALIFIED
Aika InouyeRussiaIoni Bowcher QUALIFIED
Costa DilliardJapanAsiya Javayant NEGOTIATION
Mujtaba NickaCanadaXuxue Feng RENEWAL
Leon OldroydItalyElwin Sharvill RENEWAL
Izzy GarufiBrazilOnyama Limba RENEWAL
Jeanfrancois VenereFranceAsiya Javayant PROPOSAL
Kaitlin OstroskySpainStephen Shaw PROPOSAL
Ashley DoeJapanAmy Elsner RENEWAL
Wickens NestleGermanyXuxue Feng UNQUALIFIED
Leon OldroydIndiaElwin Sharvill UNQUALIFIED
Misaki RoysterSpainAnna Fali QUALIFIED
Deepesh ChuiCanadaAmy Elsner PROPOSAL
Murillo MaletBrazilXuxue Feng UNQUALIFIED
Silvio SlusarskiUnited KingdomIvan Magalhaes UNQUALIFIED
Smith GlickFranceAnna Fali UNQUALIFIED
Cody SaylorsArgentinaElwin Sharvill QUALIFIED
Ricardo GauchoFranceBernardo Dominic QUALIFIED
Ashley DoeAustraliaIvan Magalhaes NEW
Kaitlin OstroskyItalyAmy Elsner PROPOSAL
Ivar PaprockiSpainBernardo Dominic NEGOTIATION
Salvatore StockhamGermanyIvan Magalhaes QUALIFIED
Faith GillianItalyIoni Bowcher RENEWAL
Juan WieserRussiaAsiya Javayant PROPOSAL
Morrow RutaRussiaXuxue Feng QUALIFIED
Misaki RoysterItalyIoni Bowcher UNQUALIFIED
Mayumi KolmetzItalyAsiya Javayant UNQUALIFIED
Murillo MaletUnited KingdomAsiya Javayant RENEWAL
Mayumi KolmetzCanadaIvan Magalhaes NEW
Juan WieserIndiaAmy Elsner PROPOSAL
Morrow RutaAustraliaIoni Bowcher RENEWAL
Morrow RutaAustraliaAnna Fali QUALIFIED
Munro FerenczSpainElwin Sharvill RENEWAL
Leon OldroydSpainIvan Magalhaes UNQUALIFIED
Misaki RoysterGermanyAsiya Javayant RENEWAL
Darci PoquetteAustraliaBernardo Dominic NEW
Costa DilliardArgentinaBernardo Dominic UNQUALIFIED
Aruna FigeroaItalyOnyama Limba NEGOTIATION
Frozen Columns
Name
Greenwood Bolognia
Kaitlin Ostrosky
Isabel Bowley
Faith Gillian
Octavia Malet
Faith Gillian
Wickens Nestle
Murillo Malet
Chavez Briddick
Rodrigues Campain
Francesco Shinko
Deepesh Chui
Kaitlin Ostrosky
Maisha Rulapaugh
Johnson Sergi
Antonio Caudy
Maisha Rulapaugh
Jennifer Amigon
James Butt
Cody Saylors
Emily Whobrey
Ivar Paprocki
Greenwood Bolognia
Aditya Kusko
Sinclair Waycott
Kaitlin Ostrosky
Isabel Bowley
Maria Marrier
Kaitlin Ostrosky
James Butt
Ricardo Gaucho
Misaki Royster
Stacey Maclead
Faith Gillian
Clifford Rim
Rodrigues Campain
Isabel Bowley
Misaki Royster
Alejandro Perin
Wickens Nestle
Costa Dilliard
Claire Tollner
Maria Marrier
Emily Whobrey
Mujtaba Nicka
Silvio Slusarski
Juan Wieser
Salvatore Stockham
Greenwood Bolognia
Nicolas Iturbide
IdCountryDate
1000Russia2026-04-23
1001Germany2026-04-22
1002Spain2026-04-08
1003Russia2026-04-03
1004Russia2026-04-18
1005Australia2026-04-16
1006Italy2026-04-21
1007Canada2026-04-06
1008Germany2026-04-08
1009Canada2026-04-23
1010Russia2026-04-30
1011Russia2026-04-30
1012Italy2026-04-07
1013Australia2026-04-21
1014Japan2026-04-05
1015Brazil2026-04-11
1016Canada2026-04-17
1017United Kingdom2026-04-01
1018France2026-04-04
1019France2026-04-08
1020Germany2026-04-21
1021Brazil2026-04-14
1022Canada2026-04-29
1023India2026-04-21
1024Brazil2026-04-19
1025Argentina2026-04-15
1026France2026-04-13
1027Canada2026-04-28
1028United Kingdom2026-04-10
1029France2026-04-07
1030United Kingdom2026-04-30
1031Australia2026-04-15
1032France2026-04-11
1033Spain2026-04-27
1034Canada2026-04-04
1035France2026-04-17
1036Japan2026-04-25
1037United Kingdom2026-04-20
1038Russia2026-04-18
1039Canada2026-04-06
1040Brazil2026-04-19
1041Russia2026-04-20
1042Canada2026-04-10
1043Russia2026-04-10
1044Australia2026-04-18
1045India2026-04-08
1046Spain2026-04-10
1047Germany2026-04-17
1048Germany2026-04-11
1049Australia2026-04-10

On-Demand Data

NameIdCountryDate
Arvin Albares1000Germany2026-04-30
Maria Marrier1001France2026-04-10
Wickens Nestle1002Canada2026-04-07
Misaki Royster1003United Kingdom2026-04-19
Antonio Caudy1004Italy2026-04-16
Izzy Garufi1005Russia2026-04-20
Faith Gillian1006Spain2026-04-28
James Butt1007Argentina2026-04-24
Alejandro Perin1008Canada2026-04-03
Leja Caldarera1009India2026-04-22
Jennifer Amigon1010Brazil2026-04-29
Jennifer Amigon1011France2026-04-14
Antonio Caudy1012Brazil2026-04-19
Aruna Figeroa1013Australia2026-04-24
Kaitlin Ostrosky1014Japan2026-04-30
Silvio Slusarski1015Australia2026-04-23
Wickens Nestle1016United Kingdom2026-04-25
Morrow Ruta1017India2026-04-27
Octavia Malet1018France2026-04-05
Kaitlin Ostrosky1019India2026-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtSpainStephen Shaw QUALIFIED
Jeanfrancois VenereIndiaAnna Fali PROPOSAL
Maria MarrierUnited KingdomIvan Magalhaes QUALIFIED
Francesco ShinkoRussiaOnyama Limba RENEWAL
Misaki RoysterSpainAsiya Javayant UNQUALIFIED
Wickens NestleAustraliaAnna Fali NEGOTIATION
James ButtAustraliaIoni Bowcher UNQUALIFIED
Maisha RulapaughAustraliaIoni Bowcher NEW
Clifford RimGermanyAmy Elsner RENEWAL
Leon OldroydSpainIoni Bowcher NEW
Arvin AlbaresCanadaStephen Shaw PROPOSAL
Smith GlickRussiaElwin Sharvill NEGOTIATION
Stacey MacleadUnited KingdomOnyama Limba RENEWAL
Octavia MaletSpainAsiya Javayant NEGOTIATION
Ashley DoeCanadaOnyama Limba NEGOTIATION
James ButtItalyIvan Magalhaes RENEWAL
Aika InouyeJapanIoni Bowcher RENEWAL
Jennifer AmigonUnited KingdomStephen Shaw NEW
Claire TollnerRussiaStephen Shaw RENEWAL
Kaitlin OstroskyRussiaIvan Magalhaes PROPOSAL
James ButtFranceBernardo Dominic NEGOTIATION
Emily WhobreyRussiaStephen Shaw UNQUALIFIED
Izzy GarufiArgentinaStephen Shaw NEW
Maisha RulapaughCanadaIvan Magalhaes UNQUALIFIED
David DarakjyAustraliaStephen Shaw QUALIFIED
Kaitlin OstroskyArgentinaOnyama Limba UNQUALIFIED
Juan WieserRussiaAsiya Javayant NEW
Ricardo GauchoIndiaAsiya Javayant NEGOTIATION
Wickens NestleFranceAnna Fali NEGOTIATION
Smith GlickAustraliaBernardo Dominic RENEWAL
Salvatore StockhamUnited KingdomAsiya Javayant NEW
Maria MarrierBrazilIvan Magalhaes NEGOTIATION
Jones VocelkaUnited KingdomXuxue Feng NEGOTIATION
Izzy GarufiSpainIoni Bowcher NEW
Clifford RimCanadaBernardo Dominic NEW
Tony FollerItalyAsiya Javayant RENEWAL
Julie StensethAustraliaIoni Bowcher NEGOTIATION
Arvin AlbaresUnited KingdomAmy Elsner NEGOTIATION
Silvio SlusarskiUnited KingdomIoni Bowcher PROPOSAL
Wickens NestleBrazilBernardo Dominic 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>