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
Mayumi KolmetzAustraliaIvan Magalhaes NEGOTIATION
Kaitlin OstroskyGermanyIvan Magalhaes RENEWAL
Sinclair WaycottGermanyElwin Sharvill RENEWAL
Nicolas IturbideIndiaStephen Shaw QUALIFIED
Sinclair WaycottSpainIvan Magalhaes NEW
Murillo MaletUnited KingdomBernardo Dominic PROPOSAL
Kadeem FlosiGermanyAmy Elsner UNQUALIFIED
Jeanfrancois VenereSpainIoni Bowcher UNQUALIFIED
Aika InouyeArgentinaXuxue Feng NEGOTIATION
Darci PoquetteArgentinaIvan Magalhaes RENEWAL
Darci PoquetteRussiaBernardo Dominic RENEWAL
Arvin AlbaresGermanyElwin Sharvill NEGOTIATION
Darci PoquetteArgentinaIoni Bowcher NEW
Kadeem FlosiCanadaElwin Sharvill UNQUALIFIED
Jefferson SchemmerItalyAsiya Javayant RENEWAL
Emily WhobreyJapanStephen Shaw QUALIFIED
Leon OldroydSpainOnyama Limba RENEWAL
Maisha RulapaughJapanIvan Magalhaes RENEWAL
Kaitlin OstroskyUnited KingdomIoni Bowcher NEGOTIATION
Julie StensethArgentinaIoni Bowcher RENEWAL
Mayumi KolmetzJapanStephen Shaw PROPOSAL
Johnson SergiGermanyOnyama Limba PROPOSAL
Smith GlickIndiaStephen Shaw NEGOTIATION
Sinclair WaycottUnited KingdomXuxue Feng QUALIFIED
Murillo MaletItalyAsiya Javayant UNQUALIFIED
Morrow RutaSpainAsiya Javayant QUALIFIED
Mayumi KolmetzCanadaAsiya Javayant UNQUALIFIED
Ricardo GauchoBrazilOnyama Limba UNQUALIFIED
James ButtFranceAsiya Javayant NEGOTIATION
Salvatore StockhamGermanyAnna Fali RENEWAL
Sinclair WaycottUnited KingdomAmy Elsner UNQUALIFIED
Morrow RutaAustraliaAsiya Javayant UNQUALIFIED
Emily WhobreyAustraliaAsiya Javayant UNQUALIFIED
Johnson SergiGermanyOnyama Limba RENEWAL
Jeanfrancois VenereRussiaAmy Elsner NEW
Jeanfrancois VenereCanadaBernardo Dominic RENEWAL
Adams MorascaArgentinaIoni Bowcher UNQUALIFIED
Ricardo GauchoBrazilAsiya Javayant QUALIFIED
Leja CaldareraItalyStephen Shaw UNQUALIFIED
Ricardo GauchoItalyAsiya Javayant RENEWAL
Maria MarrierRussiaXuxue Feng QUALIFIED
Rodrigues CampainBrazilStephen Shaw PROPOSAL
Clifford RimIndiaElwin Sharvill RENEWAL
Leja CaldareraGermanyXuxue Feng NEW
Nicolas IturbideArgentinaAmy Elsner NEGOTIATION
Kadeem FlosiSpainAmy Elsner QUALIFIED
David DarakjyArgentinaBernardo Dominic NEGOTIATION
James ButtItalyIoni Bowcher UNQUALIFIED
Murillo MaletArgentinaAsiya Javayant PROPOSAL
Leon OldroydGermanyIoni Bowcher QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Clifford RimJapanStephen Shaw RENEWAL
Adams MorascaIndiaStephen Shaw PROPOSAL
Tony FollerFranceElwin Sharvill PROPOSAL
Alejandro PerinBrazilBernardo Dominic NEW
Johnson SergiRussiaAsiya Javayant NEGOTIATION
Rodrigues CampainUnited KingdomStephen Shaw PROPOSAL
Jennifer AmigonSpainIoni Bowcher NEW
Jeanfrancois VenereBrazilAsiya Javayant PROPOSAL
Silvio SlusarskiArgentinaOnyama Limba RENEWAL
Emily WhobreyIndiaAmy Elsner RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia MaletArgentina2025-09-09King, Christopher A Esq RENEWAL47Asiya Javayant
1001Julie StensethArgentina2025-09-08Rangoni Of Florence UNQUALIFIED59Onyama Limba
1002Chavez BriddickUnited Kingdom2025-09-02Truhlar And Truhlar Attys NEGOTIATION12Ivan Magalhaes
1003Aruna FigeroaArgentina2025-08-30Printing Dimensions PROPOSAL62Xuxue Feng
1004Adams MorascaSpain2025-08-13Feiner Bros RENEWAL77Amy Elsner
1005Aruna FigeroaCanada2025-08-21Feiner Bros NEGOTIATION68Onyama Limba
1006Kaitlin OstroskyAustralia2025-08-30Feltz Printing Service UNQUALIFIED68Ivan Magalhaes
1007Misaki RoysterUnited Kingdom2025-08-24Chapman, Ross E Esq NEW58Ioni Bowcher
1008Francesco ShinkoSpain2025-09-04Dorl, James J Esq UNQUALIFIED63Ioni Bowcher
1009Izzy GarufiJapan2025-09-03Rangoni Of Florence RENEWAL23Asiya Javayant
1010Darci PoquetteUnited Kingdom2025-08-16Truhlar And Truhlar Attys QUALIFIED39Amy Elsner
1011Chavez BriddickGermany2025-09-07Rangoni Of Florence NEW62Amy Elsner
1012Mujtaba NickaFrance2025-08-19Printing Dimensions PROPOSAL26Ivan Magalhaes
1013Francesco ShinkoFrance2025-08-14Truhlar And Truhlar Attys NEGOTIATION2Amy Elsner
1014Aruna FigeroaCanada2025-08-26Chanay, Jeffrey A Esq NEW18Ivan Magalhaes
1015Antonio CaudyJapan2025-08-25Dorl, James J Esq QUALIFIED41Bernardo Dominic
1016Julie StensethBrazil2025-08-14Feiner Bros UNQUALIFIED82Ivan Magalhaes
1017Ricardo GauchoGermany2025-08-30King, Christopher A Esq UNQUALIFIED82Anna Fali
1018Kaitlin OstroskyUnited Kingdom2025-08-21Dorl, James J Esq PROPOSAL50Stephen Shaw
1019Johnson SergiSpain2025-09-05Dorl, James J Esq QUALIFIED12Asiya Javayant
1020Jones VocelkaRussia2025-08-16Buckley Miller Wright RENEWAL95Amy Elsner
1021Emily WhobreyFrance2025-08-31Rousseaux, Michael Esq RENEWAL60Stephen Shaw
1022Deepesh ChuiFrance2025-08-17Feiner Bros QUALIFIED79Anna Fali
1023Izzy GarufiUnited Kingdom2025-09-04Chemel, James L Cpa NEGOTIATION49Onyama Limba
1024Clifford RimGermany2025-08-21Dorl, James J Esq NEGOTIATION51Elwin Sharvill
1025Antonio CaudySpain2025-08-13Chemel, James L Cpa PROPOSAL17Bernardo Dominic
1026Jefferson SchemmerBrazil2025-08-21Printing Dimensions NEGOTIATION98Anna Fali
1027Ivar PaprockiAustralia2025-08-19Rangoni Of Florence NEGOTIATION64Anna Fali
1028Chavez BriddickBrazil2025-08-30Feiner Bros QUALIFIED0Stephen Shaw
1029Silvio SlusarskiFrance2025-08-31Buckley Miller Wright NEW94Ivan Magalhaes
1030Kaitlin OstroskySpain2025-08-12Chemel, James L Cpa QUALIFIED6Xuxue Feng
1031Octavia MaletUnited Kingdom2025-08-30Feiner Bros PROPOSAL68Anna Fali
1032Faith GillianFrance2025-08-23Dorl, James J Esq QUALIFIED66Anna Fali
1033Aruna FigeroaUnited Kingdom2025-08-30Printing Dimensions RENEWAL22Ivan Magalhaes
1034Jones VocelkaArgentina2025-08-26Printing Dimensions NEGOTIATION40Stephen Shaw
1035Maria MarrierGermany2025-08-21Rangoni Of Florence NEGOTIATION23Amy Elsner
1036Mujtaba NickaIndia2025-08-15Truhlar And Truhlar Attys QUALIFIED79Bernardo Dominic
1037Claire TollnerCanada2025-08-31Chanay, Jeffrey A Esq UNQUALIFIED22Ioni Bowcher
1038James ButtGermany2025-08-29Benton, John B Jr RENEWAL94Bernardo Dominic
1039Isabel BowleyUnited Kingdom2025-08-12Rangoni Of Florence UNQUALIFIED35Anna Fali
1040Maisha RulapaughGermany2025-08-30Rangoni Of Florence PROPOSAL27Asiya Javayant
1041Mayumi KolmetzFrance2025-08-23Feiner Bros NEW14Ioni Bowcher
1042Morrow RutaJapan2025-08-12Buckley Miller Wright RENEWAL80Elwin Sharvill
1043Mujtaba NickaArgentina2025-08-14Morlong Associates RENEWAL44Bernardo Dominic
1044Isabel BowleyRussia2025-08-29Chanay, Jeffrey A Esq NEW66Onyama Limba
1045Jeanfrancois VenereRussia2025-08-15Feltz Printing Service PROPOSAL89Asiya Javayant
1046Julie StensethArgentina2025-08-20Dorl, James J Esq QUALIFIED4Amy Elsner
1047Jeanfrancois VenereJapan2025-08-27Morlong Associates QUALIFIED33Onyama Limba
1048Francesco ShinkoCanada2025-08-29King, Christopher A Esq QUALIFIED61Stephen Shaw
1049Deepesh ChuiSpain2025-09-01Buckley Miller Wright UNQUALIFIED97Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues CampainGermanyAmy Elsner UNQUALIFIED
Octavia MaletCanadaAsiya Javayant QUALIFIED
Aika InouyeJapanIvan Magalhaes QUALIFIED
Cody SaylorsUnited KingdomElwin Sharvill QUALIFIED
Smith GlickFranceAnna Fali UNQUALIFIED
Costa DilliardBrazilElwin Sharvill NEW
Jennifer AmigonBrazilOnyama Limba RENEWAL
Aditya KuskoSpainBernardo Dominic NEGOTIATION
Leon OldroydIndiaXuxue Feng QUALIFIED
Jefferson SchemmerIndiaIoni Bowcher UNQUALIFIED
Maria MarrierAustraliaXuxue Feng PROPOSAL
Johnson SergiSpainIvan Magalhaes NEGOTIATION
Ivar PaprockiCanadaBernardo Dominic UNQUALIFIED
Mayumi KolmetzItalyStephen Shaw UNQUALIFIED
Leon OldroydItalyIoni Bowcher RENEWAL
Darci PoquetteBrazilElwin Sharvill UNQUALIFIED
Darci PoquetteArgentinaBernardo Dominic NEW
Wickens NestleJapanElwin Sharvill PROPOSAL
Julie StensethGermanyAmy Elsner UNQUALIFIED
Juan WieserBrazilXuxue Feng QUALIFIED
Stacey MacleadAustraliaAsiya Javayant NEW
Misaki RoysterItalyXuxue Feng QUALIFIED
Adams MorascaRussiaAnna Fali NEGOTIATION
Julie StensethRussiaIvan Magalhaes UNQUALIFIED
Francesco ShinkoSpainXuxue Feng QUALIFIED
Jennifer AmigonIndiaElwin Sharvill RENEWAL
Isabel BowleySpainAnna Fali NEW
Greenwood BologniaJapanXuxue Feng NEGOTIATION
Deepesh ChuiUnited KingdomIvan Magalhaes RENEWAL
Misaki RoysterUnited KingdomIvan Magalhaes RENEWAL
Kaitlin OstroskyUnited KingdomAnna Fali NEW
Mayumi KolmetzBrazilAnna Fali UNQUALIFIED
Chavez BriddickBrazilBernardo Dominic NEW
Smith GlickBrazilAnna Fali UNQUALIFIED
Munro FerenczRussiaAmy Elsner NEGOTIATION
Antonio CaudyArgentinaAmy Elsner NEW
Aditya KuskoAustraliaElwin Sharvill QUALIFIED
Munro FerenczJapanAsiya Javayant UNQUALIFIED
Murillo MaletIndiaOnyama Limba RENEWAL
Faith GillianArgentinaAsiya Javayant PROPOSAL
Alejandro PerinSpainElwin Sharvill NEGOTIATION
Isabel BowleyRussiaBernardo Dominic NEW
Francesco ShinkoBrazilIvan Magalhaes QUALIFIED
Kadeem FlosiAustraliaAsiya Javayant NEW
Cody SaylorsArgentinaAsiya Javayant NEW
David DarakjyAustraliaAsiya Javayant NEW
Isabel BowleyItalyIvan Magalhaes QUALIFIED
Darci PoquetteIndiaXuxue Feng RENEWAL
Darci PoquetteCanadaElwin Sharvill PROPOSAL
Isabel BowleyItalyBernardo Dominic RENEWAL
Frozen Columns
Name
Clifford Rim
Mayumi Kolmetz
Claire Tollner
James Butt
James Butt
Ricardo Gaucho
Izzy Garufi
Ivar Paprocki
Izzy Garufi
Ashley Doe
Tony Foller
Claire Tollner
Costa Dilliard
James Butt
Isabel Bowley
Johnson Sergi
Francesco Shinko
Deepesh Chui
Antonio Caudy
Murillo Malet
Jeanfrancois Venere
Juan Wieser
Jefferson Schemmer
Antonio Caudy
Misaki Royster
Adams Morasca
Munro Ferencz
Aditya Kusko
Sinclair Waycott
Ricardo Gaucho
Arvin Albares
Adams Morasca
Kadeem Flosi
Aditya Kusko
Tony Foller
Emily Whobrey
Ricardo Gaucho
Arvin Albares
Sinclair Waycott
Ricardo Gaucho
Adams Morasca
Mayumi Kolmetz
Adams Morasca
Morrow Ruta
Johnson Sergi
Stacey Maclead
Aditya Kusko
Juan Wieser
Juan Wieser
Jeanfrancois Venere
IdCountryDate
1000Brazil2025-08-11
1001India2025-08-25
1002Spain2025-08-16
1003Russia2025-08-30
1004Australia2025-09-09
1005Italy2025-08-15
1006Argentina2025-08-31
1007Japan2025-08-23
1008Russia2025-09-01
1009Italy2025-09-06
1010Italy2025-08-20
1011India2025-08-22
1012Argentina2025-09-07
1013Japan2025-08-12
1014India2025-08-17
1015Canada2025-08-27
1016Australia2025-08-29
1017Canada2025-08-30
1018France2025-08-28
1019Canada2025-08-16
1020India2025-09-09
1021Argentina2025-08-28
1022France2025-09-07
1023Japan2025-09-02
1024United Kingdom2025-09-05
1025Argentina2025-08-25
1026Australia2025-09-06
1027United Kingdom2025-08-12
1028France2025-09-02
1029Italy2025-08-13
1030Spain2025-08-23
1031Spain2025-09-04
1032India2025-08-17
1033Australia2025-09-04
1034Argentina2025-08-27
1035France2025-09-02
1036Australia2025-08-18
1037United Kingdom2025-08-30
1038Canada2025-09-03
1039Italy2025-09-07
1040Argentina2025-08-27
1041Spain2025-08-13
1042India2025-08-26
1043Argentina2025-08-22
1044United Kingdom2025-09-07
1045Germany2025-08-19
1046Germany2025-08-11
1047Australia2025-08-25
1048Brazil2025-08-22
1049Germany2025-08-18

On-Demand Data

NameIdCountryDate
Jeanfrancois Venere1000Argentina2025-08-23
Julie Stenseth1001Argentina2025-08-31
Johnson Sergi1002Canada2025-08-28
James Butt1003Japan2025-08-19
Ivar Paprocki1004Brazil2025-08-11
Octavia Malet1005India2025-08-19
Cody Saylors1006Australia2025-09-02
Ashley Doe1007France2025-08-16
David Darakjy1008Japan2025-09-08
Octavia Malet1009Germany2025-08-30
Kadeem Flosi1010Germany2025-08-17
Tony Foller1011Italy2025-09-03
Aditya Kusko1012France2025-08-11
Juan Wieser1013Russia2025-08-18
Jefferson Schemmer1014Argentina2025-08-21
Leja Caldarera1015Germany2025-08-31
Claire Tollner1016Argentina2025-09-06
Julie Stenseth1017Spain2025-09-05
Greenwood Bolognia1018Argentina2025-09-02
James Butt1019Brazil2025-08-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia MaletCanadaBernardo Dominic QUALIFIED
Aika InouyeAustraliaAsiya Javayant NEW
Costa DilliardJapanXuxue Feng NEGOTIATION
Juan WieserBrazilOnyama Limba NEGOTIATION
Stacey MacleadBrazilIoni Bowcher NEW
Jeanfrancois VenereUnited KingdomOnyama Limba NEGOTIATION
Antonio CaudyAustraliaAsiya Javayant NEW
Murillo MaletFranceStephen Shaw PROPOSAL
Izzy GarufiJapanIvan Magalhaes NEW
Izzy GarufiArgentinaAsiya Javayant RENEWAL
Jones VocelkaIndiaElwin Sharvill NEW
Murillo MaletArgentinaIvan Magalhaes RENEWAL
Munro FerenczJapanIoni Bowcher QUALIFIED
Silvio SlusarskiArgentinaAmy Elsner QUALIFIED
Faith GillianGermanyIoni Bowcher NEW
Maria MarrierAustraliaBernardo Dominic PROPOSAL
Mayumi KolmetzAustraliaAmy Elsner NEGOTIATION
Arvin AlbaresUnited KingdomAmy Elsner NEGOTIATION
Aditya KuskoIndiaOnyama Limba PROPOSAL
Jennifer AmigonItalyOnyama Limba UNQUALIFIED
Jones VocelkaCanadaAmy Elsner UNQUALIFIED
Silvio SlusarskiIndiaIoni Bowcher PROPOSAL
Stacey MacleadIndiaElwin Sharvill PROPOSAL
Sinclair WaycottArgentinaIvan Magalhaes QUALIFIED
Silvio SlusarskiSpainAsiya Javayant RENEWAL
Ivar PaprockiRussiaIvan Magalhaes PROPOSAL
Morrow RutaAustraliaOnyama Limba NEGOTIATION
Sinclair WaycottItalyIvan Magalhaes UNQUALIFIED
Kadeem FlosiItalyOnyama Limba NEW
Antonio CaudyFranceElwin Sharvill RENEWAL
Arvin AlbaresSpainIoni Bowcher RENEWAL
Sinclair WaycottFranceIvan Magalhaes RENEWAL
Jefferson SchemmerAustraliaXuxue Feng NEGOTIATION
Mayumi KolmetzAustraliaAmy Elsner UNQUALIFIED
Mayumi KolmetzSpainOnyama Limba NEW
Ivar PaprockiItalyAsiya Javayant QUALIFIED
Jefferson SchemmerArgentinaIoni Bowcher UNQUALIFIED
Aditya KuskoAustraliaOnyama Limba NEGOTIATION
Ashley DoeSpainBernardo Dominic PROPOSAL
Wickens NestleJapanAsiya Javayant 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>