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
Smith GlickBrazilIoni Bowcher RENEWAL
Murillo MaletArgentinaXuxue Feng RENEWAL
Mujtaba NickaSpainElwin Sharvill QUALIFIED
Murillo MaletBrazilOnyama Limba PROPOSAL
Salvatore StockhamCanadaXuxue Feng PROPOSAL
Alejandro PerinFranceStephen Shaw NEGOTIATION
Francesco ShinkoRussiaAmy Elsner NEW
Kaitlin OstroskySpainBernardo Dominic QUALIFIED
Maria MarrierIndiaAnna Fali UNQUALIFIED
Ashley DoeFranceIvan Magalhaes PROPOSAL
Costa DilliardCanadaIoni Bowcher NEGOTIATION
Octavia MaletSpainAsiya Javayant UNQUALIFIED
Darci PoquetteRussiaAmy Elsner PROPOSAL
Morrow RutaUnited KingdomBernardo Dominic NEGOTIATION
Salvatore StockhamAustraliaIvan Magalhaes RENEWAL
Munro FerenczAustraliaIoni Bowcher QUALIFIED
Claire TollnerUnited KingdomElwin Sharvill RENEWAL
Murillo MaletItalyElwin Sharvill RENEWAL
Murillo MaletGermanyElwin Sharvill NEGOTIATION
Leja CaldareraRussiaAsiya Javayant UNQUALIFIED
Isabel BowleyIndiaAmy Elsner QUALIFIED
Claire TollnerFranceAsiya Javayant NEGOTIATION
Emily WhobreyItalyBernardo Dominic QUALIFIED
Maria MarrierSpainIoni Bowcher QUALIFIED
Leon OldroydJapanAmy Elsner NEGOTIATION
Silvio SlusarskiIndiaAnna Fali NEGOTIATION
Francesco ShinkoRussiaAsiya Javayant NEGOTIATION
Ivar PaprockiCanadaElwin Sharvill QUALIFIED
Morrow RutaRussiaAsiya Javayant NEGOTIATION
Maria MarrierArgentinaXuxue Feng PROPOSAL
Emily WhobreyBrazilOnyama Limba UNQUALIFIED
Kadeem FlosiItalyIvan Magalhaes NEW
Jennifer AmigonRussiaAmy Elsner RENEWAL
Jeanfrancois VenereRussiaIvan Magalhaes RENEWAL
Johnson SergiRussiaAnna Fali NEGOTIATION
Arvin AlbaresAustraliaAmy Elsner NEGOTIATION
Arvin AlbaresItalyBernardo Dominic NEGOTIATION
James ButtCanadaStephen Shaw NEGOTIATION
Sinclair WaycottFranceAmy Elsner NEW
Salvatore StockhamAustraliaIoni Bowcher QUALIFIED
Jefferson SchemmerUnited KingdomIoni Bowcher NEW
Arvin AlbaresCanadaAnna Fali PROPOSAL
Izzy GarufiSpainAsiya Javayant UNQUALIFIED
Ashley DoeUnited KingdomIoni Bowcher PROPOSAL
Aruna FigeroaJapanAmy Elsner NEGOTIATION
David DarakjyIndiaElwin Sharvill PROPOSAL
Aditya KuskoSpainIvan Magalhaes QUALIFIED
Faith GillianItalyStephen Shaw RENEWAL
Arvin AlbaresJapanAnna Fali UNQUALIFIED
Ashley DoeCanadaBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Kaitlin OstroskyGermanyIoni Bowcher PROPOSAL
Mayumi KolmetzJapanBernardo Dominic NEW
Deepesh ChuiGermanyAnna Fali NEGOTIATION
Mujtaba NickaSpainElwin Sharvill UNQUALIFIED
Tony FollerArgentinaIoni Bowcher NEGOTIATION
Sinclair WaycottGermanyIvan Magalhaes RENEWAL
Juan WieserJapanXuxue Feng RENEWAL
Alejandro PerinUnited KingdomAnna Fali RENEWAL
Chavez BriddickAustraliaOnyama Limba RENEWAL
Octavia MaletAustraliaOnyama Limba NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja CaldareraSpain2026-05-06Rousseaux, Michael Esq QUALIFIED63Anna Fali
1001Mayumi KolmetzBrazil2026-05-03Chemel, James L Cpa UNQUALIFIED5Asiya Javayant
1002Maria MarrierFrance2026-05-06Chemel, James L Cpa PROPOSAL0Xuxue Feng
1003Tony FollerIndia2026-05-26Chanay, Jeffrey A Esq RENEWAL18Elwin Sharvill
1004Costa DilliardFrance2026-05-23Chanay, Jeffrey A Esq QUALIFIED45Asiya Javayant
1005Aruna FigeroaAustralia2026-05-13Commercial Press PROPOSAL13Elwin Sharvill
1006Aika InouyeArgentina2026-05-23Feiner Bros PROPOSAL17Xuxue Feng
1007Octavia MaletUnited Kingdom2026-05-30Rangoni Of Florence QUALIFIED89Ivan Magalhaes
1008Sinclair WaycottJapan2026-05-31Printing Dimensions QUALIFIED14Ivan Magalhaes
1009Kaitlin OstroskyJapan2026-05-26Rousseaux, Michael Esq UNQUALIFIED78Bernardo Dominic
1010Ivar PaprockiCanada2026-05-12Chapman, Ross E Esq NEW19Asiya Javayant
1011Silvio SlusarskiFrance2026-05-27Feltz Printing Service NEW56Amy Elsner
1012Emily WhobreyRussia2026-05-15Printing Dimensions RENEWAL9Asiya Javayant
1013Mujtaba NickaUnited Kingdom2026-05-24Chemel, James L Cpa NEGOTIATION97Anna Fali
1014Arvin AlbaresJapan2026-05-07Dorl, James J Esq NEGOTIATION88Stephen Shaw
1015Jeanfrancois VenereGermany2026-05-24Chapman, Ross E Esq PROPOSAL37Elwin Sharvill
1016Sinclair WaycottRussia2026-05-26Chapman, Ross E Esq NEW17Amy Elsner
1017Alejandro PerinRussia2026-05-12Morlong Associates NEGOTIATION24Onyama Limba
1018Smith GlickRussia2026-05-12Commercial Press QUALIFIED9Asiya Javayant
1019Misaki RoysterIndia2026-05-27Benton, John B Jr UNQUALIFIED41Stephen Shaw
1020James ButtRussia2026-05-13Buckley Miller Wright UNQUALIFIED16Stephen Shaw
1021Morrow RutaItaly2026-05-14Truhlar And Truhlar Attys RENEWAL19Xuxue Feng
1022Isabel BowleyBrazil2026-05-22Buckley Miller Wright QUALIFIED37Asiya Javayant
1023Silvio SlusarskiSpain2026-05-05Printing Dimensions QUALIFIED0Onyama Limba
1024Francesco ShinkoSpain2026-06-01Chanay, Jeffrey A Esq NEGOTIATION42Anna Fali
1025Chavez BriddickJapan2026-05-05Commercial Press RENEWAL50Asiya Javayant
1026Greenwood BologniaJapan2026-05-24Feltz Printing Service QUALIFIED37Onyama Limba
1027Jennifer AmigonJapan2026-05-26Chemel, James L Cpa NEW2Ivan Magalhaes
1028Chavez BriddickGermany2026-05-11Feltz Printing Service NEW33Asiya Javayant
1029Chavez BriddickAustralia2026-05-18Truhlar And Truhlar Attys PROPOSAL40Stephen Shaw
1030Greenwood BologniaArgentina2026-05-06Rousseaux, Michael Esq UNQUALIFIED20Elwin Sharvill
1031Deepesh ChuiRussia2026-05-22Chanay, Jeffrey A Esq RENEWAL70Asiya Javayant
1032Francesco ShinkoJapan2026-05-22King, Christopher A Esq NEGOTIATION32Anna Fali
1033Antonio CaudyIndia2026-05-26Chapman, Ross E Esq RENEWAL88Ivan Magalhaes
1034Munro FerenczArgentina2026-05-19Morlong Associates NEGOTIATION27Anna Fali
1035Ashley DoeSpain2026-05-28Chapman, Ross E Esq NEGOTIATION46Xuxue Feng
1036Jennifer AmigonIndia2026-05-24Feltz Printing Service NEGOTIATION1Onyama Limba
1037Octavia MaletCanada2026-05-11Chapman, Ross E Esq NEGOTIATION52Ioni Bowcher
1038Adams MorascaFrance2026-05-22Commercial Press UNQUALIFIED28Asiya Javayant
1039Greenwood BologniaBrazil2026-05-25Morlong Associates QUALIFIED98Anna Fali
1040Deepesh ChuiUnited Kingdom2026-05-13Chanay, Jeffrey A Esq PROPOSAL77Onyama Limba
1041Kaitlin OstroskyIndia2026-05-29Feltz Printing Service QUALIFIED13Anna Fali
1042Misaki RoysterIndia2026-05-22Morlong Associates RENEWAL18Ivan Magalhaes
1043Rodrigues CampainItaly2026-05-21Printing Dimensions QUALIFIED78Stephen Shaw
1044Ivar PaprockiJapan2026-05-06Feiner Bros NEW43Onyama Limba
1045Aika InouyeSpain2026-05-06Chapman, Ross E Esq NEGOTIATION30Ioni Bowcher
1046David DarakjyGermany2026-05-14Rousseaux, Michael Esq NEW14Xuxue Feng
1047Darci PoquetteCanada2026-05-10Chapman, Ross E Esq UNQUALIFIED45Ioni Bowcher
1048Wickens NestleGermany2026-05-28Dorl, James J Esq NEW97Bernardo Dominic
1049Leja CaldareraIndia2026-05-28Commercial Press UNQUALIFIED90Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Aika InouyeBrazilIvan Magalhaes UNQUALIFIED
Mujtaba NickaUnited KingdomStephen Shaw PROPOSAL
Murillo MaletItalyAmy Elsner QUALIFIED
Greenwood BologniaUnited KingdomElwin Sharvill NEGOTIATION
Mujtaba NickaArgentinaAsiya Javayant NEW
Smith GlickIndiaAsiya Javayant UNQUALIFIED
Ivar PaprockiUnited KingdomIvan Magalhaes NEW
Francesco ShinkoJapanOnyama Limba NEGOTIATION
Jefferson SchemmerAustraliaOnyama Limba NEGOTIATION
David DarakjyUnited KingdomIvan Magalhaes PROPOSAL
Jennifer AmigonGermanyIoni Bowcher PROPOSAL
Maria MarrierCanadaAnna Fali NEGOTIATION
Ashley DoeGermanyAsiya Javayant NEW
Izzy GarufiBrazilIvan Magalhaes QUALIFIED
Murillo MaletAustraliaStephen Shaw NEGOTIATION
Mayumi KolmetzBrazilAmy Elsner RENEWAL
Nicolas IturbideRussiaAsiya Javayant RENEWAL
Leon OldroydRussiaAnna Fali PROPOSAL
Rodrigues CampainItalyAnna Fali RENEWAL
Antonio CaudyAustraliaIvan Magalhaes NEGOTIATION
Silvio SlusarskiAustraliaAnna Fali QUALIFIED
Leja CaldareraFranceOnyama Limba NEW
Ivar PaprockiAustraliaAnna Fali UNQUALIFIED
Greenwood BologniaItalyIvan Magalhaes PROPOSAL
Maria MarrierFranceAnna Fali PROPOSAL
Misaki RoysterBrazilBernardo Dominic NEGOTIATION
Izzy GarufiFranceElwin Sharvill NEGOTIATION
Jennifer AmigonUnited KingdomAmy Elsner NEW
Morrow RutaJapanAnna Fali UNQUALIFIED
Aruna FigeroaAustraliaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyAustraliaAmy Elsner NEGOTIATION
Stacey MacleadCanadaAnna Fali RENEWAL
Darci PoquetteFranceElwin Sharvill PROPOSAL
Silvio SlusarskiSpainIvan Magalhaes UNQUALIFIED
Maria MarrierItalyAnna Fali PROPOSAL
Claire TollnerAustraliaIvan Magalhaes QUALIFIED
Francesco ShinkoFranceXuxue Feng QUALIFIED
Stacey MacleadArgentinaElwin Sharvill NEGOTIATION
James ButtAustraliaIvan Magalhaes QUALIFIED
Juan WieserUnited KingdomIoni Bowcher PROPOSAL
Leja CaldareraIndiaOnyama Limba PROPOSAL
Kadeem FlosiArgentinaOnyama Limba NEGOTIATION
Aditya KuskoUnited KingdomStephen Shaw UNQUALIFIED
Ashley DoeArgentinaAsiya Javayant NEGOTIATION
Stacey MacleadSpainElwin Sharvill PROPOSAL
Aika InouyeCanadaAsiya Javayant RENEWAL
Maria MarrierIndiaElwin Sharvill RENEWAL
Munro FerenczGermanyIvan Magalhaes RENEWAL
Francesco ShinkoGermanyAsiya Javayant UNQUALIFIED
Izzy GarufiBrazilOnyama Limba QUALIFIED
Frozen Columns
Name
Deepesh Chui
Jones Vocelka
Munro Ferencz
Darci Poquette
Ricardo Gaucho
James Butt
Izzy Garufi
Aruna Figeroa
Darci Poquette
Aruna Figeroa
Maria Marrier
Alejandro Perin
Wickens Nestle
Isabel Bowley
Izzy Garufi
Alejandro Perin
Aruna Figeroa
James Butt
Nicolas Iturbide
Darci Poquette
Chavez Briddick
Wickens Nestle
Cody Saylors
Ivar Paprocki
Aruna Figeroa
Tony Foller
Kaitlin Ostrosky
Maisha Rulapaugh
Julie Stenseth
Izzy Garufi
Leon Oldroyd
Isabel Bowley
Adams Morasca
Darci Poquette
Antonio Caudy
Smith Glick
Juan Wieser
Faith Gillian
Maria Marrier
Octavia Malet
Jones Vocelka
Rodrigues Campain
Isabel Bowley
Julie Stenseth
Alejandro Perin
Jones Vocelka
Kadeem Flosi
Silvio Slusarski
Juan Wieser
Maisha Rulapaugh
IdCountryDate
1000India2026-05-07
1001Canada2026-05-14
1002Australia2026-05-04
1003India2026-05-19
1004France2026-05-26
1005United Kingdom2026-05-13
1006Russia2026-05-13
1007Brazil2026-05-08
1008France2026-06-01
1009Japan2026-05-13
1010Canada2026-05-11
1011Argentina2026-05-18
1012India2026-05-11
1013Spain2026-05-26
1014United Kingdom2026-05-08
1015Japan2026-05-16
1016France2026-05-07
1017United Kingdom2026-05-03
1018Australia2026-05-29
1019Russia2026-05-07
1020Brazil2026-05-06
1021Italy2026-05-16
1022Japan2026-05-30
1023Japan2026-05-06
1024Japan2026-05-12
1025Germany2026-05-22
1026Germany2026-05-25
1027Canada2026-05-16
1028United Kingdom2026-05-14
1029Canada2026-05-09
1030Russia2026-05-19
1031Germany2026-05-27
1032Spain2026-05-20
1033Australia2026-05-20
1034Australia2026-05-15
1035France2026-05-25
1036Germany2026-05-13
1037Australia2026-05-27
1038Brazil2026-05-31
1039Argentina2026-05-19
1040Brazil2026-05-22
1041Spain2026-05-25
1042Japan2026-05-18
1043France2026-05-22
1044Brazil2026-06-01
1045Brazil2026-05-21
1046India2026-05-20
1047Spain2026-05-11
1048Germany2026-05-29
1049Australia2026-05-03

On-Demand Data

NameIdCountryDate
Adams Morasca1000India2026-05-31
Aditya Kusko1001India2026-05-23
Octavia Malet1002Brazil2026-05-06
Aika Inouye1003Canada2026-05-14
Kaitlin Ostrosky1004Brazil2026-05-26
Cody Saylors1005Argentina2026-05-08
Izzy Garufi1006Australia2026-05-05
Alejandro Perin1007France2026-05-15
Juan Wieser1008Japan2026-05-29
Ashley Doe1009Australia2026-05-07
Arvin Albares1010Australia2026-05-20
Jennifer Amigon1011Germany2026-05-06
Alejandro Perin1012United Kingdom2026-05-25
Aruna Figeroa1013India2026-05-10
Mujtaba Nicka1014Spain2026-05-27
James Butt1015Canada2026-05-10
Mayumi Kolmetz1016Australia2026-05-26
Emily Whobrey1017Australia2026-05-21
Adams Morasca1018Spain2026-05-27
Jennifer Amigon1019Spain2026-05-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Julie StensethJapanXuxue Feng NEGOTIATION
Sinclair WaycottArgentinaStephen Shaw QUALIFIED
Mujtaba NickaCanadaAnna Fali PROPOSAL
Maisha RulapaughItalyBernardo Dominic RENEWAL
Murillo MaletUnited KingdomIvan Magalhaes RENEWAL
Costa DilliardSpainOnyama Limba NEW
Ricardo GauchoItalyIvan Magalhaes UNQUALIFIED
David DarakjyCanadaIvan Magalhaes UNQUALIFIED
Octavia MaletBrazilAsiya Javayant NEW
Isabel BowleySpainAmy Elsner PROPOSAL
Jennifer AmigonAustraliaBernardo Dominic QUALIFIED
Antonio CaudyBrazilIoni Bowcher QUALIFIED
Isabel BowleyFranceXuxue Feng NEGOTIATION
Leon OldroydIndiaIoni Bowcher RENEWAL
Rodrigues CampainSpainIvan Magalhaes NEGOTIATION
Nicolas IturbideItalyAsiya Javayant RENEWAL
Francesco ShinkoBrazilIvan Magalhaes NEGOTIATION
Maisha RulapaughRussiaAnna Fali RENEWAL
Sinclair WaycottUnited KingdomOnyama Limba NEW
Silvio SlusarskiIndiaIvan Magalhaes PROPOSAL
Nicolas IturbideFranceAmy Elsner PROPOSAL
Tony FollerRussiaStephen Shaw RENEWAL
Jones VocelkaUnited KingdomAsiya Javayant NEGOTIATION
Aruna FigeroaSpainOnyama Limba RENEWAL
Isabel BowleySpainOnyama Limba NEGOTIATION
Tony FollerItalyStephen Shaw UNQUALIFIED
Misaki RoysterAustraliaAnna Fali PROPOSAL
Alejandro PerinUnited KingdomAnna Fali NEGOTIATION
Aruna FigeroaUnited KingdomIvan Magalhaes QUALIFIED
Arvin AlbaresIndiaAmy Elsner NEW
Chavez BriddickIndiaXuxue Feng NEW
Munro FerenczArgentinaIvan Magalhaes RENEWAL
Jeanfrancois VenereFranceIvan Magalhaes PROPOSAL
Faith GillianBrazilStephen Shaw NEGOTIATION
Silvio SlusarskiSpainBernardo Dominic RENEWAL
Murillo MaletRussiaIoni Bowcher PROPOSAL
Antonio CaudyFranceAmy Elsner PROPOSAL
Faith GillianArgentinaOnyama Limba RENEWAL
Stacey MacleadAustraliaElwin Sharvill RENEWAL
Leja CaldareraGermanyElwin 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>