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
Isabel BowleyArgentinaXuxue Feng NEGOTIATION
Munro FerenczBrazilXuxue Feng PROPOSAL
Antonio CaudyRussiaAsiya Javayant NEW
Ivar PaprockiSpainAsiya Javayant PROPOSAL
Wickens NestleGermanyAsiya Javayant UNQUALIFIED
Jefferson SchemmerJapanBernardo Dominic RENEWAL
Mujtaba NickaCanadaBernardo Dominic QUALIFIED
Misaki RoysterRussiaIoni Bowcher NEGOTIATION
Leja CaldareraIndiaAmy Elsner QUALIFIED
Nicolas IturbideAustraliaIvan Magalhaes UNQUALIFIED
Wickens NestleFranceElwin Sharvill NEGOTIATION
Misaki RoysterRussiaIoni Bowcher RENEWAL
Mujtaba NickaJapanStephen Shaw QUALIFIED
Jones VocelkaSpainIoni Bowcher RENEWAL
Ashley DoeItalyXuxue Feng UNQUALIFIED
Johnson SergiIndiaStephen Shaw NEW
Nicolas IturbideGermanyXuxue Feng PROPOSAL
Octavia MaletFranceAsiya Javayant NEGOTIATION
Julie StensethFranceAmy Elsner PROPOSAL
Julie StensethCanadaIoni Bowcher RENEWAL
Antonio CaudyItalyAsiya Javayant NEGOTIATION
David DarakjyBrazilElwin Sharvill QUALIFIED
Maisha RulapaughRussiaIoni Bowcher NEW
Kadeem FlosiBrazilOnyama Limba RENEWAL
Stacey MacleadIndiaStephen Shaw NEW
Emily WhobreyArgentinaAnna Fali RENEWAL
Mayumi KolmetzBrazilElwin Sharvill NEGOTIATION
Murillo MaletArgentinaElwin Sharvill NEGOTIATION
Wickens NestleCanadaStephen Shaw UNQUALIFIED
Leon OldroydCanadaIvan Magalhaes QUALIFIED
Ashley DoeIndiaBernardo Dominic RENEWAL
Wickens NestleSpainOnyama Limba QUALIFIED
Alejandro PerinSpainIvan Magalhaes NEW
Misaki RoysterIndiaAmy Elsner PROPOSAL
Stacey MacleadJapanIoni Bowcher RENEWAL
Cody SaylorsRussiaElwin Sharvill UNQUALIFIED
Silvio SlusarskiSpainBernardo Dominic UNQUALIFIED
Arvin AlbaresIndiaAmy Elsner NEGOTIATION
David DarakjyGermanyAmy Elsner NEW
Aditya KuskoGermanyIoni Bowcher PROPOSAL
Leja CaldareraGermanyAnna Fali UNQUALIFIED
Alejandro PerinArgentinaElwin Sharvill RENEWAL
Tony FollerSpainAnna Fali NEGOTIATION
Nicolas IturbideJapanIoni Bowcher QUALIFIED
Adams MorascaJapanOnyama Limba PROPOSAL
Alejandro PerinJapanOnyama Limba PROPOSAL
Jefferson SchemmerArgentinaIoni Bowcher PROPOSAL
Johnson SergiBrazilStephen Shaw RENEWAL
Claire TollnerUnited KingdomIvan Magalhaes UNQUALIFIED
Maisha RulapaughItalyAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Julie StensethJapanIoni Bowcher RENEWAL
Morrow RutaItalyOnyama Limba NEGOTIATION
Jeanfrancois VenereBrazilElwin Sharvill NEW
Faith GillianJapanIvan Magalhaes UNQUALIFIED
Morrow RutaGermanyStephen Shaw PROPOSAL
Nicolas IturbideRussiaAsiya Javayant NEW
Juan WieserAustraliaBernardo Dominic UNQUALIFIED
Mayumi KolmetzAustraliaBernardo Dominic NEGOTIATION
Sinclair WaycottUnited KingdomOnyama Limba NEGOTIATION
Ivar PaprockiGermanyBernardo Dominic UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydUnited Kingdom2026-05-25Chemel, James L Cpa NEGOTIATION45Amy Elsner
1001Salvatore StockhamCanada2026-06-08Morlong Associates PROPOSAL45Stephen Shaw
1002Misaki RoysterIndia2026-06-10Buckley Miller Wright RENEWAL60Bernardo Dominic
1003Greenwood BologniaJapan2026-05-15Chemel, James L Cpa NEW14Asiya Javayant
1004Alejandro PerinRussia2026-06-09Rousseaux, Michael Esq NEW1Bernardo Dominic
1005Arvin AlbaresArgentina2026-05-15Chapman, Ross E Esq PROPOSAL96Asiya Javayant
1006Faith GillianAustralia2026-05-23Rousseaux, Michael Esq NEGOTIATION74Amy Elsner
1007Claire TollnerJapan2026-06-06Morlong Associates UNQUALIFIED58Amy Elsner
1008Salvatore StockhamRussia2026-05-24Truhlar And Truhlar Attys RENEWAL44Xuxue Feng
1009Antonio CaudyFrance2026-06-06Dorl, James J Esq PROPOSAL21Bernardo Dominic
1010Antonio CaudyCanada2026-05-26King, Christopher A Esq QUALIFIED81Onyama Limba
1011Julie StensethGermany2026-06-07Dorl, James J Esq QUALIFIED66Ioni Bowcher
1012Aruna FigeroaJapan2026-06-06Printing Dimensions NEW15Amy Elsner
1013Claire TollnerCanada2026-05-24Dorl, James J Esq NEGOTIATION45Xuxue Feng
1014Jefferson SchemmerUnited Kingdom2026-06-02Buckley Miller Wright UNQUALIFIED39Ivan Magalhaes
1015Jones VocelkaSpain2026-05-24Chapman, Ross E Esq PROPOSAL68Amy Elsner
1016Octavia MaletFrance2026-06-07Truhlar And Truhlar Attys UNQUALIFIED41Anna Fali
1017Kaitlin OstroskyCanada2026-06-08Truhlar And Truhlar Attys QUALIFIED55Xuxue Feng
1018Misaki RoysterRussia2026-05-18Morlong Associates PROPOSAL66Asiya Javayant
1019Sinclair WaycottFrance2026-06-03King, Christopher A Esq UNQUALIFIED46Xuxue Feng
1020Aruna FigeroaBrazil2026-06-05Buckley Miller Wright UNQUALIFIED85Bernardo Dominic
1021Julie StensethJapan2026-06-10King, Christopher A Esq PROPOSAL24Bernardo Dominic
1022Jennifer AmigonJapan2026-06-01Buckley Miller Wright NEW62Ivan Magalhaes
1023Tony FollerUnited Kingdom2026-05-22Chemel, James L Cpa NEGOTIATION3Amy Elsner
1024Salvatore StockhamSpain2026-06-06Rangoni Of Florence NEGOTIATION88Onyama Limba
1025Aditya KuskoSpain2026-06-12Chanay, Jeffrey A Esq PROPOSAL86Onyama Limba
1026Leja CaldareraSpain2026-05-21Rangoni Of Florence UNQUALIFIED61Ioni Bowcher
1027Nicolas IturbideArgentina2026-06-03Rangoni Of Florence PROPOSAL69Bernardo Dominic
1028Ivar PaprockiJapan2026-06-07Printing Dimensions PROPOSAL4Asiya Javayant
1029Alejandro PerinIndia2026-06-06Benton, John B Jr NEW89Xuxue Feng
1030Aditya KuskoCanada2026-05-23Buckley Miller Wright NEGOTIATION46Amy Elsner
1031Mujtaba NickaJapan2026-06-06Feltz Printing Service UNQUALIFIED43Bernardo Dominic
1032Izzy GarufiItaly2026-05-30Rangoni Of Florence NEGOTIATION19Stephen Shaw
1033Rodrigues CampainSpain2026-06-11King, Christopher A Esq RENEWAL14Bernardo Dominic
1034Mayumi KolmetzArgentina2026-05-18King, Christopher A Esq UNQUALIFIED97Anna Fali
1035Faith GillianAustralia2026-06-02Chapman, Ross E Esq PROPOSAL66Elwin Sharvill
1036Tony FollerCanada2026-06-07Truhlar And Truhlar Attys RENEWAL1Ioni Bowcher
1037Octavia MaletUnited Kingdom2026-06-08Benton, John B Jr PROPOSAL69Ioni Bowcher
1038Misaki RoysterArgentina2026-06-02Dorl, James J Esq UNQUALIFIED19Stephen Shaw
1039Mayumi KolmetzUnited Kingdom2026-05-17Benton, John B Jr RENEWAL64Xuxue Feng
1040Stacey MacleadGermany2026-05-18Morlong Associates PROPOSAL53Asiya Javayant
1041Ivar PaprockiSpain2026-05-28Commercial Press QUALIFIED93Stephen Shaw
1042Jennifer AmigonItaly2026-05-15Chanay, Jeffrey A Esq PROPOSAL10Amy Elsner
1043Jennifer AmigonGermany2026-05-23Morlong Associates PROPOSAL86Elwin Sharvill
1044Kadeem FlosiItaly2026-05-25Chanay, Jeffrey A Esq RENEWAL92Elwin Sharvill
1045Cody SaylorsSpain2026-05-25Printing Dimensions RENEWAL3Amy Elsner
1046Misaki RoysterAustralia2026-05-25Truhlar And Truhlar Attys RENEWAL2Stephen Shaw
1047Aruna FigeroaItaly2026-05-29Rousseaux, Michael Esq QUALIFIED19Amy Elsner
1048Wickens NestleCanada2026-05-19Buckley Miller Wright RENEWAL3Ivan Magalhaes
1049Aditya KuskoFrance2026-05-31Rousseaux, Michael Esq QUALIFIED77Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Munro FerenczArgentinaOnyama Limba NEGOTIATION
Rodrigues CampainGermanyElwin Sharvill NEGOTIATION
Aditya KuskoAustraliaAsiya Javayant QUALIFIED
Jones VocelkaGermanyAsiya Javayant RENEWAL
Aika InouyeCanadaIvan Magalhaes NEGOTIATION
Francesco ShinkoSpainOnyama Limba PROPOSAL
Deepesh ChuiBrazilAmy Elsner QUALIFIED
Jones VocelkaItalyAsiya Javayant UNQUALIFIED
Nicolas IturbideGermanyIvan Magalhaes UNQUALIFIED
Smith GlickItalyBernardo Dominic QUALIFIED
Jones VocelkaJapanAsiya Javayant NEGOTIATION
James ButtBrazilIvan Magalhaes PROPOSAL
Wickens NestleBrazilAsiya Javayant NEGOTIATION
Smith GlickRussiaBernardo Dominic UNQUALIFIED
Maria MarrierArgentinaIoni Bowcher RENEWAL
Adams MorascaRussiaAnna Fali UNQUALIFIED
Ivar PaprockiBrazilXuxue Feng QUALIFIED
Rodrigues CampainRussiaXuxue Feng PROPOSAL
Jefferson SchemmerCanadaStephen Shaw QUALIFIED
Silvio SlusarskiItalyIvan Magalhaes NEW
James ButtGermanyAsiya Javayant QUALIFIED
Aika InouyeArgentinaXuxue Feng UNQUALIFIED
Kaitlin OstroskyIndiaBernardo Dominic PROPOSAL
Mayumi KolmetzItalyIvan Magalhaes NEGOTIATION
Misaki RoysterArgentinaAsiya Javayant NEGOTIATION
Alejandro PerinUnited KingdomIvan Magalhaes NEGOTIATION
Tony FollerArgentinaAmy Elsner UNQUALIFIED
Juan WieserAustraliaOnyama Limba QUALIFIED
Darci PoquetteBrazilOnyama Limba QUALIFIED
Leja CaldareraIndiaElwin Sharvill UNQUALIFIED
Ivar PaprockiSpainIoni Bowcher NEW
Aruna FigeroaArgentinaAnna Fali QUALIFIED
Antonio CaudyFranceAmy Elsner PROPOSAL
Maria MarrierCanadaBernardo Dominic RENEWAL
Claire TollnerUnited KingdomIoni Bowcher PROPOSAL
Darci PoquetteArgentinaAsiya Javayant NEGOTIATION
Silvio SlusarskiGermanyAnna Fali NEW
David DarakjyArgentinaAmy Elsner NEGOTIATION
Kadeem FlosiSpainAnna Fali QUALIFIED
Kaitlin OstroskyUnited KingdomAnna Fali QUALIFIED
Arvin AlbaresJapanIvan Magalhaes NEW
Silvio SlusarskiFranceXuxue Feng NEW
Leon OldroydIndiaAsiya Javayant RENEWAL
Kadeem FlosiJapanAsiya Javayant QUALIFIED
Aika InouyeSpainIvan Magalhaes NEGOTIATION
Morrow RutaCanadaAmy Elsner RENEWAL
Munro FerenczRussiaAnna Fali NEW
Ricardo GauchoBrazilElwin Sharvill QUALIFIED
Isabel BowleyBrazilAnna Fali NEW
Murillo MaletFranceXuxue Feng NEW
Frozen Columns
Name
Costa Dilliard
Antonio Caudy
Aika Inouye
Emily Whobrey
Izzy Garufi
Johnson Sergi
Jefferson Schemmer
Emily Whobrey
Murillo Malet
Murillo Malet
Aruna Figeroa
Leon Oldroyd
Nicolas Iturbide
Claire Tollner
Misaki Royster
Kaitlin Ostrosky
Rodrigues Campain
Aruna Figeroa
Francesco Shinko
Jeanfrancois Venere
Maisha Rulapaugh
Kaitlin Ostrosky
Rodrigues Campain
Wickens Nestle
Kadeem Flosi
Aruna Figeroa
Arvin Albares
Julie Stenseth
Juan Wieser
Faith Gillian
Munro Ferencz
Claire Tollner
Misaki Royster
Mayumi Kolmetz
Munro Ferencz
Darci Poquette
Antonio Caudy
Chavez Briddick
Alejandro Perin
Wickens Nestle
Adams Morasca
Leon Oldroyd
Munro Ferencz
Aditya Kusko
Adams Morasca
Aika Inouye
Emily Whobrey
Antonio Caudy
Kaitlin Ostrosky
Deepesh Chui
IdCountryDate
1000Brazil2026-05-23
1001India2026-06-02
1002Canada2026-05-25
1003Spain2026-05-18
1004Argentina2026-05-28
1005Argentina2026-06-04
1006Spain2026-05-25
1007Germany2026-06-11
1008Australia2026-05-27
1009Germany2026-06-03
1010Italy2026-05-20
1011Italy2026-06-09
1012Australia2026-05-15
1013France2026-05-28
1014Australia2026-06-02
1015France2026-05-31
1016Brazil2026-05-16
1017Germany2026-06-06
1018Italy2026-05-26
1019Germany2026-06-10
1020Brazil2026-05-19
1021France2026-05-25
1022Japan2026-05-18
1023Spain2026-06-08
1024France2026-06-05
1025Australia2026-06-01
1026Germany2026-06-06
1027Argentina2026-05-31
1028Spain2026-06-01
1029Brazil2026-05-19
1030Germany2026-05-29
1031Argentina2026-05-18
1032India2026-05-30
1033United Kingdom2026-06-03
1034Argentina2026-06-02
1035Spain2026-05-29
1036Germany2026-05-14
1037United Kingdom2026-06-06
1038Argentina2026-06-02
1039Russia2026-05-28
1040United Kingdom2026-05-20
1041India2026-05-22
1042Canada2026-06-03
1043Russia2026-05-23
1044United Kingdom2026-05-16
1045Spain2026-06-09
1046Russia2026-05-19
1047United Kingdom2026-05-28
1048India2026-06-09
1049Japan2026-05-23

On-Demand Data

NameIdCountryDate
Johnson Sergi1000Canada2026-05-30
Octavia Malet1001France2026-06-12
Izzy Garufi1002Spain2026-05-29
Johnson Sergi1003Brazil2026-06-07
Costa Dilliard1004Japan2026-05-26
Ashley Doe1005India2026-05-21
Silvio Slusarski1006India2026-06-02
Darci Poquette1007Russia2026-06-11
Misaki Royster1008Canada2026-05-16
Arvin Albares1009Spain2026-05-16
Adams Morasca1010United Kingdom2026-05-22
Izzy Garufi1011Australia2026-06-08
Ricardo Gaucho1012Canada2026-06-09
Cody Saylors1013Brazil2026-06-08
Francesco Shinko1014Italy2026-05-20
Tony Foller1015Russia2026-05-27
Leja Caldarera1016Spain2026-06-05
James Butt1017India2026-06-05
Stacey Maclead1018Italy2026-06-12
Silvio Slusarski1019Italy2026-05-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ivar PaprockiGermanyIvan Magalhaes UNQUALIFIED
Adams MorascaSpainElwin Sharvill UNQUALIFIED
Antonio CaudyCanadaXuxue Feng NEGOTIATION
Salvatore StockhamRussiaStephen Shaw UNQUALIFIED
Leon OldroydItalyIvan Magalhaes NEGOTIATION
Rodrigues CampainArgentinaOnyama Limba NEW
Adams MorascaIndiaElwin Sharvill RENEWAL
Greenwood BologniaRussiaOnyama Limba RENEWAL
Misaki RoysterArgentinaOnyama Limba NEGOTIATION
Juan WieserFranceIoni Bowcher NEW
Kaitlin OstroskyJapanStephen Shaw NEGOTIATION
Rodrigues CampainItalyOnyama Limba UNQUALIFIED
Izzy GarufiItalyOnyama Limba NEW
Aruna FigeroaBrazilAmy Elsner NEGOTIATION
Faith GillianJapanElwin Sharvill UNQUALIFIED
Octavia MaletRussiaStephen Shaw NEGOTIATION
Aditya KuskoSpainStephen Shaw PROPOSAL
Maisha RulapaughFranceAmy Elsner QUALIFIED
James ButtItalyStephen Shaw QUALIFIED
Sinclair WaycottItalyXuxue Feng RENEWAL
Munro FerenczIndiaBernardo Dominic RENEWAL
Mayumi KolmetzCanadaBernardo Dominic QUALIFIED
Antonio CaudyRussiaIvan Magalhaes RENEWAL
Leon OldroydGermanyAsiya Javayant RENEWAL
Clifford RimCanadaBernardo Dominic NEGOTIATION
Costa DilliardFranceAnna Fali QUALIFIED
Clifford RimCanadaIvan Magalhaes NEGOTIATION
Jefferson SchemmerBrazilAmy Elsner NEGOTIATION
Deepesh ChuiRussiaAnna Fali PROPOSAL
Misaki RoysterBrazilAsiya Javayant RENEWAL
Costa DilliardIndiaBernardo Dominic QUALIFIED
Leon OldroydFranceIoni Bowcher QUALIFIED
Darci PoquetteJapanBernardo Dominic RENEWAL
Darci PoquetteIndiaIoni Bowcher PROPOSAL
Emily WhobreySpainAnna Fali PROPOSAL
Julie StensethRussiaAsiya Javayant RENEWAL
Mayumi KolmetzJapanIvan Magalhaes UNQUALIFIED
James ButtBrazilIoni Bowcher NEGOTIATION
Stacey MacleadGermanyOnyama Limba UNQUALIFIED
Maria MarrierUnited KingdomBernardo Dominic NEGOTIATION

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