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
Maria MarrierItalyXuxue Feng RENEWAL
Aruna FigeroaRussiaIoni Bowcher QUALIFIED
Rodrigues CampainUnited KingdomIvan Magalhaes NEW
David DarakjyBrazilXuxue Feng NEGOTIATION
Aditya KuskoIndiaAnna Fali RENEWAL
Cody SaylorsRussiaIvan Magalhaes NEGOTIATION
Costa DilliardFranceAsiya Javayant UNQUALIFIED
Julie StensethAustraliaElwin Sharvill NEGOTIATION
Adams MorascaIndiaAsiya Javayant NEGOTIATION
Ashley DoeSpainAmy Elsner QUALIFIED
Octavia MaletGermanyStephen Shaw NEW
Chavez BriddickFranceAnna Fali UNQUALIFIED
Izzy GarufiSpainAsiya Javayant UNQUALIFIED
Darci PoquetteItalyXuxue Feng QUALIFIED
Stacey MacleadIndiaIvan Magalhaes PROPOSAL
Mayumi KolmetzGermanyIvan Magalhaes NEGOTIATION
Kaitlin OstroskyAustraliaElwin Sharvill PROPOSAL
James ButtBrazilXuxue Feng PROPOSAL
Leon OldroydItalyAmy Elsner UNQUALIFIED
Munro FerenczAustraliaAsiya Javayant NEW
Cody SaylorsSpainAnna Fali RENEWAL
Ivar PaprockiIndiaAsiya Javayant RENEWAL
Greenwood BologniaUnited KingdomAsiya Javayant NEGOTIATION
Antonio CaudyIndiaAnna Fali UNQUALIFIED
Julie StensethRussiaIvan Magalhaes NEGOTIATION
Isabel BowleyGermanyElwin Sharvill QUALIFIED
Mujtaba NickaGermanyAsiya Javayant NEW
Kaitlin OstroskyFranceBernardo Dominic PROPOSAL
Isabel BowleyUnited KingdomXuxue Feng UNQUALIFIED
Maisha RulapaughUnited KingdomStephen Shaw RENEWAL
Mayumi KolmetzBrazilStephen Shaw NEGOTIATION
Adams MorascaCanadaIoni Bowcher QUALIFIED
Juan WieserUnited KingdomStephen Shaw NEW
Arvin AlbaresBrazilXuxue Feng NEGOTIATION
Francesco ShinkoBrazilIoni Bowcher RENEWAL
Kadeem FlosiBrazilAnna Fali NEGOTIATION
Darci PoquetteRussiaXuxue Feng RENEWAL
Francesco ShinkoAustraliaElwin Sharvill RENEWAL
Kaitlin OstroskyJapanAsiya Javayant UNQUALIFIED
Julie StensethCanadaAsiya Javayant UNQUALIFIED
Leon OldroydCanadaOnyama Limba UNQUALIFIED
Morrow RutaRussiaIoni Bowcher PROPOSAL
Aruna FigeroaJapanIoni Bowcher RENEWAL
Munro FerenczItalyBernardo Dominic NEW
Emily WhobreyItalyAmy Elsner NEW
Aika InouyeRussiaBernardo Dominic RENEWAL
Wickens NestleFranceIvan Magalhaes UNQUALIFIED
David DarakjyItalyElwin Sharvill NEW
Julie StensethGermanyIvan Magalhaes QUALIFIED
Emily WhobreyAustraliaElwin Sharvill PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Leja CaldareraAustraliaOnyama Limba QUALIFIED
Jeanfrancois VenereCanadaAsiya Javayant PROPOSAL
Alejandro PerinJapanXuxue Feng UNQUALIFIED
Aika InouyeBrazilIvan Magalhaes RENEWAL
Maisha RulapaughBrazilOnyama Limba QUALIFIED
Isabel BowleyGermanyStephen Shaw NEGOTIATION
Leon OldroydGermanyXuxue Feng NEGOTIATION
Faith GillianJapanAsiya Javayant NEW
Johnson SergiCanadaIvan Magalhaes RENEWAL
Leon OldroydItalyBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Claire TollnerArgentina2026-04-15Printing Dimensions RENEWAL10Xuxue Feng
1001Jeanfrancois VenereBrazil2026-04-11Chanay, Jeffrey A Esq NEW81Xuxue Feng
1002Mayumi KolmetzGermany2026-04-04Rangoni Of Florence UNQUALIFIED2Stephen Shaw
1003Juan WieserRussia2026-04-17Chapman, Ross E Esq QUALIFIED79Amy Elsner
1004Jeanfrancois VenereJapan2026-04-25Printing Dimensions UNQUALIFIED5Onyama Limba
1005Jones VocelkaAustralia2026-04-23Feltz Printing Service QUALIFIED67Elwin Sharvill
1006Maisha RulapaughIndia2026-04-27Dorl, James J Esq NEGOTIATION60Stephen Shaw
1007Julie StensethSpain2026-04-19Buckley Miller Wright NEGOTIATION0Bernardo Dominic
1008Maria MarrierUnited Kingdom2026-04-01Dorl, James J Esq QUALIFIED90Ioni Bowcher
1009Octavia MaletRussia2026-04-22Buckley Miller Wright UNQUALIFIED6Anna Fali
1010Stacey MacleadSpain2026-04-04Morlong Associates PROPOSAL37Anna Fali
1011Emily WhobreyUnited Kingdom2026-04-04Morlong Associates NEW16Xuxue Feng
1012David DarakjyFrance2026-04-07Chapman, Ross E Esq NEW51Ivan Magalhaes
1013Jeanfrancois VenereRussia2026-04-27Commercial Press QUALIFIED23Anna Fali
1014Ashley DoeBrazil2026-04-12Truhlar And Truhlar Attys QUALIFIED52Elwin Sharvill
1015Julie StensethIndia2026-04-05Morlong Associates RENEWAL12Xuxue Feng
1016Clifford RimRussia2026-04-08King, Christopher A Esq NEW72Onyama Limba
1017Emily WhobreyUnited Kingdom2026-04-27Truhlar And Truhlar Attys NEW48Anna Fali
1018Greenwood BologniaIndia2026-04-08Feiner Bros RENEWAL57Ivan Magalhaes
1019Jennifer AmigonSpain2026-04-12King, Christopher A Esq QUALIFIED2Stephen Shaw
1020Greenwood BologniaUnited Kingdom2026-04-12Feiner Bros RENEWAL9Onyama Limba
1021Julie StensethIndia2026-04-22Printing Dimensions NEW1Ioni Bowcher
1022Juan WieserAustralia2026-04-08Buckley Miller Wright UNQUALIFIED81Anna Fali
1023Maria MarrierUnited Kingdom2026-04-27Dorl, James J Esq NEW20Ivan Magalhaes
1024Ricardo GauchoAustralia2026-04-16Commercial Press QUALIFIED36Elwin Sharvill
1025Ricardo GauchoCanada2026-04-15Printing Dimensions RENEWAL62Bernardo Dominic
1026Faith GillianJapan2026-04-17Dorl, James J Esq NEGOTIATION83Elwin Sharvill
1027Sinclair WaycottFrance2026-04-02Feiner Bros RENEWAL95Ivan Magalhaes
1028Cody SaylorsItaly2026-04-02King, Christopher A Esq UNQUALIFIED25Bernardo Dominic
1029Leja CaldareraArgentina2026-04-08Rangoni Of Florence PROPOSAL83Bernardo Dominic
1030Ashley DoeGermany2026-04-14Rangoni Of Florence RENEWAL9Anna Fali
1031Arvin AlbaresJapan2026-04-09Buckley Miller Wright NEW18Asiya Javayant
1032Maisha RulapaughBrazil2026-04-18Morlong Associates NEGOTIATION56Ivan Magalhaes
1033Isabel BowleyBrazil2026-04-12Truhlar And Truhlar Attys QUALIFIED73Bernardo Dominic
1034Octavia MaletItaly2026-04-13Benton, John B Jr NEGOTIATION61Ivan Magalhaes
1035Mujtaba NickaIndia2026-04-16Morlong Associates NEGOTIATION40Stephen Shaw
1036Faith GillianArgentina2026-04-19Commercial Press NEGOTIATION86Bernardo Dominic
1037Jones VocelkaItaly2026-04-04Chapman, Ross E Esq QUALIFIED46Elwin Sharvill
1038Isabel BowleyItaly2026-04-20Rousseaux, Michael Esq NEGOTIATION29Amy Elsner
1039Mujtaba NickaBrazil2026-04-04Buckley Miller Wright UNQUALIFIED74Stephen Shaw
1040Jefferson SchemmerJapan2026-04-25Feiner Bros NEGOTIATION91Ivan Magalhaes
1041Misaki RoysterBrazil2026-04-23Feiner Bros UNQUALIFIED2Stephen Shaw
1042Darci PoquetteJapan2026-04-14Chemel, James L Cpa NEGOTIATION29Xuxue Feng
1043Tony FollerIndia2026-04-10Chanay, Jeffrey A Esq NEW31Onyama Limba
1044Sinclair WaycottCanada2026-04-08Feltz Printing Service RENEWAL1Onyama Limba
1045Faith GillianRussia2026-04-13Feiner Bros NEGOTIATION96Anna Fali
1046Darci PoquetteCanada2026-04-21Printing Dimensions QUALIFIED96Elwin Sharvill
1047Murillo MaletItaly2026-04-05Dorl, James J Esq NEGOTIATION23Bernardo Dominic
1048Maisha RulapaughAustralia2026-04-24Dorl, James J Esq RENEWAL77Elwin Sharvill
1049Jennifer AmigonBrazil2026-04-22Benton, John B Jr NEW6Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Morrow RutaAustraliaAsiya Javayant RENEWAL
Aika InouyeCanadaBernardo Dominic NEW
Smith GlickFranceElwin Sharvill NEGOTIATION
Octavia MaletCanadaAsiya Javayant NEW
Francesco ShinkoSpainOnyama Limba NEGOTIATION
Munro FerenczBrazilOnyama Limba NEW
Jones VocelkaRussiaBernardo Dominic QUALIFIED
Stacey MacleadRussiaStephen Shaw RENEWAL
Claire TollnerRussiaIvan Magalhaes QUALIFIED
Juan WieserJapanXuxue Feng NEGOTIATION
Leon OldroydAustraliaIoni Bowcher NEGOTIATION
Silvio SlusarskiCanadaOnyama Limba QUALIFIED
Munro FerenczAustraliaAnna Fali QUALIFIED
Nicolas IturbideSpainBernardo Dominic NEGOTIATION
Jefferson SchemmerGermanyXuxue Feng UNQUALIFIED
Rodrigues CampainJapanStephen Shaw NEGOTIATION
Francesco ShinkoUnited KingdomStephen Shaw RENEWAL
Misaki RoysterAustraliaXuxue Feng RENEWAL
David DarakjyRussiaOnyama Limba NEGOTIATION
Aruna FigeroaAustraliaIoni Bowcher UNQUALIFIED
Alejandro PerinCanadaStephen Shaw NEW
Kaitlin OstroskyFranceIvan Magalhaes UNQUALIFIED
Ashley DoeIndiaAmy Elsner NEW
Arvin AlbaresSpainOnyama Limba RENEWAL
Misaki RoysterJapanStephen Shaw NEW
Silvio SlusarskiIndiaAsiya Javayant NEGOTIATION
Octavia MaletItalyElwin Sharvill UNQUALIFIED
Jennifer AmigonUnited KingdomAsiya Javayant UNQUALIFIED
Emily WhobreyBrazilOnyama Limba NEGOTIATION
Faith GillianRussiaAnna Fali QUALIFIED
Smith GlickRussiaAmy Elsner RENEWAL
Johnson SergiIndiaAsiya Javayant RENEWAL
Mayumi KolmetzFranceStephen Shaw NEGOTIATION
Jennifer AmigonArgentinaAsiya Javayant UNQUALIFIED
Octavia MaletJapanIvan Magalhaes QUALIFIED
Morrow RutaGermanyXuxue Feng PROPOSAL
Claire TollnerRussiaAsiya Javayant NEGOTIATION
Rodrigues CampainCanadaXuxue Feng NEGOTIATION
Ivar PaprockiUnited KingdomOnyama Limba QUALIFIED
Jennifer AmigonFranceBernardo Dominic UNQUALIFIED
Clifford RimBrazilXuxue Feng QUALIFIED
Morrow RutaItalyIoni Bowcher NEGOTIATION
Wickens NestleAustraliaAnna Fali PROPOSAL
Juan WieserBrazilElwin Sharvill QUALIFIED
Jefferson SchemmerArgentinaOnyama Limba UNQUALIFIED
Wickens NestleRussiaAnna Fali NEGOTIATION
Claire TollnerRussiaElwin Sharvill QUALIFIED
Jennifer AmigonRussiaStephen Shaw NEW
Claire TollnerIndiaBernardo Dominic UNQUALIFIED
Mujtaba NickaFranceAnna Fali UNQUALIFIED
Frozen Columns
Name
Aruna Figeroa
Darci Poquette
Jefferson Schemmer
Munro Ferencz
Wickens Nestle
Alejandro Perin
Silvio Slusarski
Rodrigues Campain
Chavez Briddick
Silvio Slusarski
Smith Glick
Aika Inouye
Greenwood Bolognia
Murillo Malet
Munro Ferencz
Adams Morasca
Cody Saylors
Claire Tollner
Leon Oldroyd
Alejandro Perin
Rodrigues Campain
David Darakjy
Isabel Bowley
Tony Foller
Emily Whobrey
Munro Ferencz
Ashley Doe
Francesco Shinko
Deepesh Chui
Leon Oldroyd
Izzy Garufi
Misaki Royster
Mujtaba Nicka
Aruna Figeroa
Chavez Briddick
Ashley Doe
Antonio Caudy
Rodrigues Campain
Octavia Malet
Munro Ferencz
Juan Wieser
Aruna Figeroa
Tony Foller
Jeanfrancois Venere
Morrow Ruta
Salvatore Stockham
Cody Saylors
Arvin Albares
Jones Vocelka
Leon Oldroyd
IdCountryDate
1000Japan2026-04-23
1001India2026-04-01
1002France2026-04-12
1003Japan2026-04-03
1004Spain2026-04-04
1005Germany2026-04-24
1006United Kingdom2026-04-10
1007India2026-04-12
1008France2026-04-03
1009Russia2026-04-28
1010Canada2026-04-15
1011Italy2026-04-02
1012India2026-04-22
1013Brazil2026-04-12
1014Italy2026-04-04
1015India2026-04-11
1016Australia2026-04-10
1017Japan2026-04-25
1018Canada2026-04-24
1019Australia2026-04-14
1020India2026-04-21
1021Spain2026-04-15
1022Germany2026-04-11
1023Argentina2026-03-31
1024Spain2026-04-18
1025Australia2026-04-01
1026Australia2026-04-17
1027India2026-04-13
1028Russia2026-03-31
1029Argentina2026-04-28
1030Japan2026-04-23
1031India2026-04-19
1032Germany2026-04-01
1033Brazil2026-04-21
1034Germany2026-04-28
1035Australia2026-04-27
1036Spain2026-04-04
1037India2026-04-27
1038Japan2026-03-30
1039Canada2026-04-21
1040Australia2026-04-20
1041Canada2026-04-21
1042Japan2026-04-14
1043India2026-04-01
1044Argentina2026-04-13
1045Australia2026-04-09
1046Australia2026-04-16
1047Australia2026-04-24
1048Spain2026-04-03
1049Argentina2026-04-04

On-Demand Data

NameIdCountryDate
Aruna Figeroa1000Argentina2026-04-18
Maisha Rulapaugh1001United Kingdom2026-04-08
Kaitlin Ostrosky1002Canada2026-03-31
Deepesh Chui1003Canada2026-04-04
Francesco Shinko1004Italy2026-04-09
Kaitlin Ostrosky1005Russia2026-04-05
Johnson Sergi1006Brazil2026-04-03
Aika Inouye1007Spain2026-04-04
Claire Tollner1008India2026-04-06
Izzy Garufi1009Italy2026-04-14
Kaitlin Ostrosky1010Argentina2026-04-05
Juan Wieser1011Spain2026-03-31
Leon Oldroyd1012Russia2026-04-05
Tony Foller1013Italy2026-04-12
Arvin Albares1014Japan2026-04-15
Murillo Malet1015Canada2026-04-08
Salvatore Stockham1016Brazil2026-04-25
Ashley Doe1017Brazil2026-04-24
Ricardo Gaucho1018Russia2026-04-04
Murillo Malet1019France2026-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
David DarakjyBrazilOnyama Limba PROPOSAL
Costa DilliardCanadaStephen Shaw RENEWAL
Greenwood BologniaCanadaOnyama Limba UNQUALIFIED
Adams MorascaIndiaIoni Bowcher NEW
Mayumi KolmetzSpainIvan Magalhaes NEW
James ButtGermanyStephen Shaw QUALIFIED
Mayumi KolmetzFranceStephen Shaw NEGOTIATION
Emily WhobreyCanadaIoni Bowcher UNQUALIFIED
Deepesh ChuiGermanyAsiya Javayant RENEWAL
Stacey MacleadBrazilStephen Shaw QUALIFIED
Ivar PaprockiFranceBernardo Dominic NEGOTIATION
Aika InouyeCanadaBernardo Dominic NEGOTIATION
Aika InouyeJapanElwin Sharvill UNQUALIFIED
Mayumi KolmetzAustraliaBernardo Dominic UNQUALIFIED
Wickens NestleBrazilXuxue Feng PROPOSAL
Costa DilliardGermanyXuxue Feng UNQUALIFIED
Julie StensethCanadaIoni Bowcher PROPOSAL
Jones VocelkaRussiaIoni Bowcher PROPOSAL
Antonio CaudyFranceXuxue Feng UNQUALIFIED
Murillo MaletAustraliaAnna Fali PROPOSAL
Aruna FigeroaUnited KingdomIvan Magalhaes QUALIFIED
Jeanfrancois VenereSpainElwin Sharvill RENEWAL
Johnson SergiRussiaAnna Fali NEGOTIATION
Wickens NestleAustraliaStephen Shaw QUALIFIED
Morrow RutaIndiaXuxue Feng NEW
Darci PoquetteBrazilAsiya Javayant NEW
Murillo MaletAustraliaAmy Elsner NEGOTIATION
Silvio SlusarskiRussiaStephen Shaw UNQUALIFIED
Chavez BriddickJapanXuxue Feng QUALIFIED
Antonio CaudyArgentinaIvan Magalhaes PROPOSAL
David DarakjyCanadaXuxue Feng UNQUALIFIED
Arvin AlbaresArgentinaIvan Magalhaes PROPOSAL
Darci PoquetteAustraliaAmy Elsner PROPOSAL
Kadeem FlosiJapanElwin Sharvill NEW
Leon OldroydAustraliaAsiya Javayant UNQUALIFIED
Kadeem FlosiGermanyAsiya Javayant QUALIFIED
Greenwood BologniaArgentinaAmy Elsner RENEWAL
Claire TollnerUnited KingdomIoni Bowcher QUALIFIED
Izzy GarufiRussiaElwin Sharvill RENEWAL
Silvio SlusarskiJapanIoni Bowcher 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>