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
Clifford RimAustraliaIvan Magalhaes NEW
Adams MorascaCanadaElwin Sharvill UNQUALIFIED
Leon OldroydCanadaBernardo Dominic PROPOSAL
Darci PoquetteArgentinaIoni Bowcher NEGOTIATION
Aika InouyeItalyAmy Elsner UNQUALIFIED
Arvin AlbaresAustraliaAnna Fali NEGOTIATION
Chavez BriddickUnited KingdomBernardo Dominic UNQUALIFIED
Murillo MaletCanadaStephen Shaw RENEWAL
Maisha RulapaughIndiaIoni Bowcher QUALIFIED
Kaitlin OstroskyIndiaElwin Sharvill RENEWAL
Jones VocelkaSpainIoni Bowcher NEGOTIATION
Smith GlickAustraliaAmy Elsner NEGOTIATION
Arvin AlbaresItalyIvan Magalhaes PROPOSAL
Faith GillianCanadaIvan Magalhaes UNQUALIFIED
Deepesh ChuiCanadaBernardo Dominic UNQUALIFIED
Greenwood BologniaFranceIoni Bowcher NEGOTIATION
Johnson SergiIndiaElwin Sharvill PROPOSAL
Mujtaba NickaRussiaAsiya Javayant UNQUALIFIED
Izzy GarufiIndiaIvan Magalhaes RENEWAL
Chavez BriddickBrazilAmy Elsner RENEWAL
Juan WieserRussiaAnna Fali PROPOSAL
Jennifer AmigonBrazilOnyama Limba QUALIFIED
Jeanfrancois VenereRussiaIvan Magalhaes UNQUALIFIED
Jones VocelkaSpainAnna Fali UNQUALIFIED
Antonio CaudyCanadaOnyama Limba PROPOSAL
David DarakjyUnited KingdomIvan Magalhaes QUALIFIED
Isabel BowleyIndiaStephen Shaw NEW
Munro FerenczSpainAnna Fali NEW
Leon OldroydItalyOnyama Limba NEGOTIATION
Leja CaldareraCanadaAsiya Javayant RENEWAL
Chavez BriddickAustraliaAsiya Javayant NEGOTIATION
Mujtaba NickaUnited KingdomOnyama Limba QUALIFIED
Misaki RoysterBrazilOnyama Limba PROPOSAL
Maisha RulapaughGermanyAmy Elsner RENEWAL
Izzy GarufiArgentinaStephen Shaw RENEWAL
Julie StensethAustraliaStephen Shaw NEW
Tony FollerBrazilAnna Fali RENEWAL
Leja CaldareraJapanIvan Magalhaes PROPOSAL
Costa DilliardFranceIvan Magalhaes UNQUALIFIED
Kaitlin OstroskyAustraliaBernardo Dominic RENEWAL
Aditya KuskoItalyXuxue Feng NEW
James ButtUnited KingdomBernardo Dominic PROPOSAL
Arvin AlbaresGermanyAsiya Javayant RENEWAL
Faith GillianRussiaIvan Magalhaes QUALIFIED
Sinclair WaycottArgentinaStephen Shaw QUALIFIED
Faith GillianRussiaStephen Shaw QUALIFIED
Silvio SlusarskiGermanyAmy Elsner UNQUALIFIED
Faith GillianItalyStephen Shaw NEGOTIATION
Kadeem FlosiArgentinaBernardo Dominic NEW
Murillo MaletIndiaIvan Magalhaes QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Maria MarrierRussiaXuxue Feng NEW
Antonio CaudyBrazilXuxue Feng QUALIFIED
Nicolas IturbideAustraliaAnna Fali RENEWAL
Maisha RulapaughBrazilBernardo Dominic NEW
Munro FerenczSpainXuxue Feng QUALIFIED
Francesco ShinkoBrazilAsiya Javayant UNQUALIFIED
Murillo MaletArgentinaOnyama Limba NEGOTIATION
Jennifer AmigonSpainElwin Sharvill PROPOSAL
Nicolas IturbideJapanAnna Fali PROPOSAL
Jennifer AmigonIndiaElwin Sharvill QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000David DarakjyUnited Kingdom2026-06-06Buckley Miller Wright QUALIFIED44Elwin Sharvill
1001Ricardo GauchoBrazil2026-05-17Buckley Miller Wright NEGOTIATION42Ivan Magalhaes
1002Kaitlin OstroskyRussia2026-05-22Feltz Printing Service PROPOSAL90Amy Elsner
1003Deepesh ChuiRussia2026-06-04Printing Dimensions NEGOTIATION59Ivan Magalhaes
1004Octavia MaletIndia2026-05-16King, Christopher A Esq QUALIFIED60Stephen Shaw
1005Antonio CaudyIndia2026-06-01Chemel, James L Cpa NEW86Amy Elsner
1006Kaitlin OstroskyRussia2026-05-20Morlong Associates RENEWAL60Ivan Magalhaes
1007Ashley DoeItaly2026-05-29Truhlar And Truhlar Attys NEGOTIATION14Stephen Shaw
1008Claire TollnerFrance2026-06-07Buckley Miller Wright RENEWAL29Asiya Javayant
1009Sinclair WaycottSpain2026-05-15Printing Dimensions PROPOSAL52Bernardo Dominic
1010Kadeem FlosiRussia2026-06-08Printing Dimensions PROPOSAL72Stephen Shaw
1011Isabel BowleyIndia2026-06-10King, Christopher A Esq PROPOSAL48Ioni Bowcher
1012Izzy GarufiIndia2026-06-09Feiner Bros RENEWAL60Stephen Shaw
1013Alejandro PerinSpain2026-05-18Benton, John B Jr NEGOTIATION83Bernardo Dominic
1014Isabel BowleyUnited Kingdom2026-05-14Morlong Associates QUALIFIED95Amy Elsner
1015Alejandro PerinItaly2026-05-26Rousseaux, Michael Esq NEW17Bernardo Dominic
1016Smith GlickFrance2026-05-17Rangoni Of Florence QUALIFIED9Amy Elsner
1017Julie StensethUnited Kingdom2026-05-24Chemel, James L Cpa UNQUALIFIED13Stephen Shaw
1018Salvatore StockhamIndia2026-05-16Chemel, James L Cpa QUALIFIED29Xuxue Feng
1019Silvio SlusarskiFrance2026-06-09Benton, John B Jr RENEWAL97Asiya Javayant
1020Mujtaba NickaSpain2026-05-27Chanay, Jeffrey A Esq RENEWAL42Ivan Magalhaes
1021Clifford RimRussia2026-06-10Truhlar And Truhlar Attys UNQUALIFIED5Elwin Sharvill
1022Clifford RimBrazil2026-05-27Benton, John B Jr QUALIFIED98Elwin Sharvill
1023Smith GlickGermany2026-05-30Morlong Associates NEW99Bernardo Dominic
1024Rodrigues CampainFrance2026-05-30Truhlar And Truhlar Attys PROPOSAL8Xuxue Feng
1025Jones VocelkaFrance2026-06-08Benton, John B Jr RENEWAL0Onyama Limba
1026Clifford RimIndia2026-06-10Truhlar And Truhlar Attys NEGOTIATION54Anna Fali
1027Aruna FigeroaUnited Kingdom2026-05-13Printing Dimensions PROPOSAL37Bernardo Dominic
1028Nicolas IturbideUnited Kingdom2026-05-28Truhlar And Truhlar Attys RENEWAL12Stephen Shaw
1029Leja CaldareraJapan2026-06-03King, Christopher A Esq UNQUALIFIED13Ivan Magalhaes
1030Kadeem FlosiAustralia2026-05-29Feiner Bros NEGOTIATION68Amy Elsner
1031Juan WieserIndia2026-05-31Truhlar And Truhlar Attys QUALIFIED61Elwin Sharvill
1032Costa DilliardBrazil2026-06-07Chanay, Jeffrey A Esq NEW31Xuxue Feng
1033Claire TollnerCanada2026-05-20Commercial Press QUALIFIED30Ivan Magalhaes
1034Maria MarrierRussia2026-05-30Chapman, Ross E Esq QUALIFIED73Amy Elsner
1035Mujtaba NickaRussia2026-05-16Morlong Associates QUALIFIED16Stephen Shaw
1036Julie StensethGermany2026-05-30Benton, John B Jr PROPOSAL26Asiya Javayant
1037Ricardo GauchoFrance2026-05-30Commercial Press QUALIFIED0Bernardo Dominic
1038Sinclair WaycottItaly2026-06-10Chapman, Ross E Esq RENEWAL70Amy Elsner
1039Arvin AlbaresCanada2026-05-28Truhlar And Truhlar Attys NEGOTIATION71Asiya Javayant
1040Chavez BriddickArgentina2026-05-24Chapman, Ross E Esq QUALIFIED17Asiya Javayant
1041Jennifer AmigonSpain2026-05-26Chapman, Ross E Esq QUALIFIED72Stephen Shaw
1042Misaki RoysterCanada2026-05-28Benton, John B Jr NEGOTIATION85Elwin Sharvill
1043Mayumi KolmetzFrance2026-05-28Benton, John B Jr QUALIFIED63Ivan Magalhaes
1044Kadeem FlosiIndia2026-06-10Rangoni Of Florence RENEWAL24Elwin Sharvill
1045Aruna FigeroaJapan2026-06-01Chapman, Ross E Esq QUALIFIED32Stephen Shaw
1046Leja CaldareraRussia2026-06-08Buckley Miller Wright UNQUALIFIED64Ivan Magalhaes
1047Sinclair WaycottArgentina2026-05-31Benton, John B Jr NEW56Bernardo Dominic
1048Clifford RimArgentina2026-05-16Truhlar And Truhlar Attys RENEWAL75Stephen Shaw
1049Mujtaba NickaJapan2026-06-04Printing Dimensions QUALIFIED31Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Misaki RoysterArgentinaElwin Sharvill UNQUALIFIED
Arvin AlbaresIndiaXuxue Feng PROPOSAL
Jefferson SchemmerAustraliaStephen Shaw QUALIFIED
Sinclair WaycottRussiaElwin Sharvill PROPOSAL
Greenwood BologniaBrazilXuxue Feng RENEWAL
Ashley DoeUnited KingdomIoni Bowcher NEGOTIATION
Kadeem FlosiArgentinaStephen Shaw PROPOSAL
Smith GlickBrazilElwin Sharvill NEGOTIATION
Munro FerenczUnited KingdomBernardo Dominic PROPOSAL
Isabel BowleyGermanyXuxue Feng PROPOSAL
Adams MorascaGermanyElwin Sharvill PROPOSAL
Aruna FigeroaSpainIvan Magalhaes UNQUALIFIED
Octavia MaletItalyElwin Sharvill NEGOTIATION
Antonio CaudyGermanyBernardo Dominic PROPOSAL
Juan WieserRussiaStephen Shaw QUALIFIED
Ricardo GauchoRussiaAsiya Javayant NEW
Costa DilliardItalyIvan Magalhaes UNQUALIFIED
Jennifer AmigonUnited KingdomBernardo Dominic RENEWAL
Costa DilliardUnited KingdomOnyama Limba PROPOSAL
Nicolas IturbideArgentinaAnna Fali PROPOSAL
Leon OldroydSpainIoni Bowcher RENEWAL
Maria MarrierIndiaStephen Shaw RENEWAL
Cody SaylorsRussiaBernardo Dominic RENEWAL
Maria MarrierFranceElwin Sharvill NEW
Darci PoquetteItalyStephen Shaw NEGOTIATION
Jennifer AmigonAustraliaOnyama Limba NEW
Aika InouyeAustraliaAsiya Javayant UNQUALIFIED
Salvatore StockhamArgentinaElwin Sharvill PROPOSAL
Kaitlin OstroskySpainAnna Fali NEGOTIATION
Ashley DoeIndiaOnyama Limba RENEWAL
Salvatore StockhamGermanyXuxue Feng NEGOTIATION
Aruna FigeroaAustraliaIvan Magalhaes NEGOTIATION
Jeanfrancois VenereIndiaOnyama Limba QUALIFIED
Claire TollnerIndiaAmy Elsner NEGOTIATION
Kadeem FlosiGermanyElwin Sharvill NEW
Leja CaldareraArgentinaIoni Bowcher PROPOSAL
James ButtAustraliaOnyama Limba RENEWAL
Silvio SlusarskiUnited KingdomAnna Fali UNQUALIFIED
Jones VocelkaCanadaAnna Fali QUALIFIED
Sinclair WaycottItalyIvan Magalhaes UNQUALIFIED
Costa DilliardJapanStephen Shaw QUALIFIED
Johnson SergiBrazilIoni Bowcher PROPOSAL
Jones VocelkaItalyXuxue Feng NEW
Ricardo GauchoIndiaElwin Sharvill NEGOTIATION
Wickens NestleFranceAmy Elsner RENEWAL
Juan WieserIndiaIvan Magalhaes RENEWAL
Greenwood BologniaBrazilBernardo Dominic RENEWAL
Munro FerenczCanadaBernardo Dominic PROPOSAL
Isabel BowleyGermanyXuxue Feng NEW
Julie StensethBrazilIvan Magalhaes PROPOSAL
Frozen Columns
Name
Ivar Paprocki
Tony Foller
Leon Oldroyd
Isabel Bowley
Jeanfrancois Venere
Mayumi Kolmetz
Isabel Bowley
Juan Wieser
Ricardo Gaucho
Ricardo Gaucho
Alejandro Perin
Leon Oldroyd
Murillo Malet
Chavez Briddick
Kadeem Flosi
Izzy Garufi
Adams Morasca
Deepesh Chui
Johnson Sergi
Murillo Malet
Aika Inouye
Faith Gillian
Deepesh Chui
Cody Saylors
Izzy Garufi
Kaitlin Ostrosky
Greenwood Bolognia
Deepesh Chui
Murillo Malet
Ricardo Gaucho
Smith Glick
Salvatore Stockham
Antonio Caudy
Kaitlin Ostrosky
Munro Ferencz
Smith Glick
Clifford Rim
Ashley Doe
Kaitlin Ostrosky
Maisha Rulapaugh
Faith Gillian
Mujtaba Nicka
Wickens Nestle
Jones Vocelka
Antonio Caudy
Aditya Kusko
Darci Poquette
Jeanfrancois Venere
Rodrigues Campain
Alejandro Perin
IdCountryDate
1000Japan2026-05-25
1001Canada2026-05-28
1002Australia2026-05-31
1003India2026-06-04
1004India2026-06-05
1005Russia2026-05-24
1006Germany2026-05-13
1007Russia2026-05-19
1008Germany2026-05-18
1009Italy2026-06-10
1010France2026-05-19
1011France2026-06-03
1012Russia2026-06-10
1013Canada2026-05-26
1014Russia2026-05-26
1015Spain2026-05-17
1016Russia2026-05-25
1017India2026-05-30
1018Germany2026-05-18
1019Spain2026-05-25
1020Brazil2026-05-19
1021Australia2026-06-06
1022Italy2026-05-23
1023United Kingdom2026-05-20
1024Japan2026-05-25
1025France2026-05-16
1026Russia2026-06-09
1027France2026-06-03
1028Brazil2026-06-10
1029Japan2026-05-12
1030Brazil2026-05-22
1031Spain2026-05-23
1032Japan2026-05-28
1033Canada2026-06-06
1034Russia2026-05-24
1035Canada2026-06-10
1036Japan2026-06-09
1037Australia2026-06-05
1038Australia2026-05-22
1039Russia2026-06-05
1040Japan2026-05-12
1041Australia2026-06-05
1042Russia2026-06-09
1043Canada2026-05-29
1044Japan2026-06-05
1045Canada2026-05-25
1046Spain2026-05-27
1047India2026-05-22
1048Spain2026-05-22
1049Japan2026-06-04

On-Demand Data

NameIdCountryDate
Aruna Figeroa1000United Kingdom2026-05-28
Smith Glick1001Canada2026-06-08
Alejandro Perin1002Australia2026-05-15
Mujtaba Nicka1003Spain2026-06-08
Silvio Slusarski1004United Kingdom2026-05-16
Johnson Sergi1005Japan2026-05-30
Izzy Garufi1006Russia2026-05-21
Julie Stenseth1007Spain2026-05-21
Costa Dilliard1008Italy2026-06-10
Juan Wieser1009Argentina2026-05-28
Cody Saylors1010India2026-05-21
James Butt1011Italy2026-06-10
Adams Morasca1012Argentina2026-05-27
Stacey Maclead1013Italy2026-06-08
Murillo Malet1014United Kingdom2026-05-18
Clifford Rim1015Brazil2026-05-18
Mayumi Kolmetz1016France2026-06-10
Silvio Slusarski1017Canada2026-06-04
Morrow Ruta1018France2026-05-28
Silvio Slusarski1019Russia2026-05-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika InouyeCanadaAsiya Javayant RENEWAL
Greenwood BologniaGermanyAsiya Javayant NEGOTIATION
Adams MorascaSpainIvan Magalhaes PROPOSAL
Jones VocelkaCanadaElwin Sharvill RENEWAL
Wickens NestleJapanXuxue Feng UNQUALIFIED
Deepesh ChuiItalyElwin Sharvill PROPOSAL
Faith GillianAustraliaAmy Elsner NEGOTIATION
Johnson SergiGermanyStephen Shaw UNQUALIFIED
Mayumi KolmetzJapanIoni Bowcher UNQUALIFIED
Jefferson SchemmerBrazilElwin Sharvill QUALIFIED
Wickens NestleJapanStephen Shaw NEGOTIATION
Jeanfrancois VenereJapanXuxue Feng QUALIFIED
Salvatore StockhamSpainAmy Elsner NEW
Jefferson SchemmerItalyElwin Sharvill NEW
Wickens NestleSpainIvan Magalhaes PROPOSAL
Chavez BriddickArgentinaIoni Bowcher PROPOSAL
Salvatore StockhamJapanIoni Bowcher UNQUALIFIED
Leja CaldareraAustraliaIoni Bowcher RENEWAL
Kadeem FlosiRussiaIoni Bowcher NEGOTIATION
Ricardo GauchoRussiaBernardo Dominic RENEWAL
Adams MorascaSpainAmy Elsner PROPOSAL
Ivar PaprockiSpainXuxue Feng UNQUALIFIED
Izzy GarufiSpainBernardo Dominic NEW
David DarakjyRussiaAmy Elsner NEGOTIATION
James ButtArgentinaAsiya Javayant NEGOTIATION
Aruna FigeroaFranceElwin Sharvill NEGOTIATION
Kadeem FlosiUnited KingdomAsiya Javayant UNQUALIFIED
Smith GlickFranceAnna Fali NEGOTIATION
Stacey MacleadGermanyXuxue Feng PROPOSAL
Julie StensethRussiaElwin Sharvill UNQUALIFIED
Izzy GarufiUnited KingdomIvan Magalhaes NEW
Misaki RoysterUnited KingdomOnyama Limba UNQUALIFIED
James ButtSpainIoni Bowcher UNQUALIFIED
Morrow RutaSpainAmy Elsner UNQUALIFIED
Clifford RimRussiaBernardo Dominic QUALIFIED
Emily WhobreySpainStephen Shaw PROPOSAL
David DarakjyRussiaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyItalyIvan Magalhaes NEGOTIATION
Wickens NestleItalyAsiya Javayant NEW
Misaki RoysterItalyElwin Sharvill 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>