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
Jefferson SchemmerItalyXuxue Feng NEGOTIATION
Stacey MacleadRussiaElwin Sharvill QUALIFIED
Cody SaylorsRussiaElwin Sharvill NEW
Murillo MaletFranceAnna Fali NEGOTIATION
Salvatore StockhamFranceIoni Bowcher NEGOTIATION
Leja CaldareraGermanyIoni Bowcher PROPOSAL
Mayumi KolmetzArgentinaElwin Sharvill PROPOSAL
Antonio CaudySpainElwin Sharvill UNQUALIFIED
Mayumi KolmetzUnited KingdomIvan Magalhaes NEGOTIATION
Wickens NestleSpainBernardo Dominic QUALIFIED
Clifford RimRussiaStephen Shaw RENEWAL
Jeanfrancois VenereUnited KingdomStephen Shaw NEW
Kaitlin OstroskyAustraliaElwin Sharvill NEW
Isabel BowleyAustraliaAnna Fali RENEWAL
Ashley DoeItalyXuxue Feng NEGOTIATION
Kaitlin OstroskyUnited KingdomIvan Magalhaes RENEWAL
Maisha RulapaughJapanAsiya Javayant NEW
Juan WieserAustraliaBernardo Dominic RENEWAL
Aika InouyeFranceAsiya Javayant RENEWAL
Munro FerenczBrazilAsiya Javayant PROPOSAL
Tony FollerSpainXuxue Feng RENEWAL
Jefferson SchemmerIndiaAnna Fali NEW
Murillo MaletSpainXuxue Feng NEGOTIATION
Adams MorascaGermanyIoni Bowcher QUALIFIED
Wickens NestleCanadaXuxue Feng NEGOTIATION
Deepesh ChuiUnited KingdomElwin Sharvill UNQUALIFIED
James ButtArgentinaAnna Fali QUALIFIED
Jefferson SchemmerCanadaStephen Shaw UNQUALIFIED
Isabel BowleySpainIoni Bowcher PROPOSAL
Jennifer AmigonIndiaOnyama Limba UNQUALIFIED
Smith GlickFranceStephen Shaw PROPOSAL
Cody SaylorsFranceIoni Bowcher QUALIFIED
Jefferson SchemmerAustraliaAmy Elsner QUALIFIED
Darci PoquetteAustraliaIvan Magalhaes RENEWAL
Adams MorascaAustraliaOnyama Limba PROPOSAL
Claire TollnerSpainIvan Magalhaes QUALIFIED
Francesco ShinkoAustraliaElwin Sharvill UNQUALIFIED
Izzy GarufiJapanAnna Fali PROPOSAL
Julie StensethCanadaAsiya Javayant QUALIFIED
Maisha RulapaughCanadaElwin Sharvill NEW
Kadeem FlosiItalyAmy Elsner PROPOSAL
Isabel BowleyIndiaIoni Bowcher NEGOTIATION
Cody SaylorsAustraliaIvan Magalhaes NEW
Alejandro PerinSpainStephen Shaw PROPOSAL
Nicolas IturbideGermanyIoni Bowcher UNQUALIFIED
Deepesh ChuiAustraliaAsiya Javayant RENEWAL
Morrow RutaRussiaIoni Bowcher NEGOTIATION
James ButtJapanIoni Bowcher UNQUALIFIED
Mayumi KolmetzBrazilAmy Elsner PROPOSAL
Leon OldroydJapanOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Alejandro PerinArgentinaBernardo Dominic UNQUALIFIED
Costa DilliardArgentinaBernardo Dominic QUALIFIED
Jones VocelkaFranceIoni Bowcher PROPOSAL
Jennifer AmigonFranceIvan Magalhaes UNQUALIFIED
Chavez BriddickBrazilAmy Elsner RENEWAL
Deepesh ChuiJapanAmy Elsner QUALIFIED
Aditya KuskoFranceAmy Elsner PROPOSAL
Smith GlickBrazilStephen Shaw NEW
Leja CaldareraAustraliaAnna Fali NEW
Murillo MaletIndiaAsiya Javayant NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Juan WieserRussia2026-04-02Benton, John B Jr NEGOTIATION93Xuxue Feng
1001Izzy GarufiUnited Kingdom2026-03-31Chapman, Ross E Esq PROPOSAL32Xuxue Feng
1002Antonio CaudyIndia2026-04-18Rousseaux, Michael Esq PROPOSAL26Bernardo Dominic
1003Francesco ShinkoAustralia2026-04-17Rousseaux, Michael Esq PROPOSAL59Stephen Shaw
1004Izzy GarufiCanada2026-04-13Benton, John B Jr QUALIFIED17Onyama Limba
1005Munro FerenczItaly2026-04-01Rangoni Of Florence NEW88Bernardo Dominic
1006Munro FerenczJapan2026-04-14Morlong Associates UNQUALIFIED66Ivan Magalhaes
1007Morrow RutaBrazil2026-04-06Truhlar And Truhlar Attys RENEWAL42Asiya Javayant
1008Jefferson SchemmerCanada2026-03-28Dorl, James J Esq UNQUALIFIED88Anna Fali
1009Francesco ShinkoFrance2026-03-28Printing Dimensions RENEWAL35Elwin Sharvill
1010Greenwood BologniaItaly2026-03-28Feltz Printing Service NEGOTIATION48Amy Elsner
1011Adams MorascaJapan2026-04-15Commercial Press UNQUALIFIED77Bernardo Dominic
1012Rodrigues CampainItaly2026-04-14Chanay, Jeffrey A Esq QUALIFIED65Ivan Magalhaes
1013Misaki RoysterFrance2026-04-13Morlong Associates NEW46Stephen Shaw
1014David DarakjyItaly2026-04-25King, Christopher A Esq NEGOTIATION98Amy Elsner
1015Maria MarrierSpain2026-04-09Rangoni Of Florence RENEWAL15Onyama Limba
1016Costa DilliardFrance2026-04-09Printing Dimensions RENEWAL50Xuxue Feng
1017Mujtaba NickaUnited Kingdom2026-03-29Truhlar And Truhlar Attys RENEWAL34Onyama Limba
1018Octavia MaletJapan2026-04-01Printing Dimensions QUALIFIED13Xuxue Feng
1019Jefferson SchemmerArgentina2026-04-04Buckley Miller Wright QUALIFIED39Anna Fali
1020Nicolas IturbideCanada2026-04-25Truhlar And Truhlar Attys RENEWAL11Xuxue Feng
1021Jones VocelkaRussia2026-04-16Morlong Associates UNQUALIFIED40Bernardo Dominic
1022Jeanfrancois VenereRussia2026-04-22Buckley Miller Wright RENEWAL98Stephen Shaw
1023Chavez BriddickFrance2026-04-16Feiner Bros UNQUALIFIED5Xuxue Feng
1024Jefferson SchemmerIndia2026-03-28Feiner Bros NEGOTIATION73Stephen Shaw
1025Misaki RoysterBrazil2026-03-30Buckley Miller Wright UNQUALIFIED2Ivan Magalhaes
1026Tony FollerJapan2026-04-11Buckley Miller Wright QUALIFIED22Ioni Bowcher
1027Clifford RimSpain2026-04-08Chemel, James L Cpa NEGOTIATION54Bernardo Dominic
1028Darci PoquetteJapan2026-04-16Rangoni Of Florence PROPOSAL23Amy Elsner
1029Claire TollnerCanada2026-04-11King, Christopher A Esq NEW26Asiya Javayant
1030Claire TollnerBrazil2026-04-23Commercial Press PROPOSAL15Bernardo Dominic
1031Aditya KuskoGermany2026-04-26Dorl, James J Esq NEW86Anna Fali
1032Emily WhobreyIndia2026-04-09Commercial Press RENEWAL16Asiya Javayant
1033Aruna FigeroaAustralia2026-04-09Dorl, James J Esq UNQUALIFIED62Amy Elsner
1034Mayumi KolmetzJapan2026-04-24Printing Dimensions QUALIFIED77Ivan Magalhaes
1035Ivar PaprockiAustralia2026-04-22Buckley Miller Wright UNQUALIFIED91Bernardo Dominic
1036Alejandro PerinSpain2026-04-06Feiner Bros NEW84Anna Fali
1037Kadeem FlosiFrance2026-03-28Feiner Bros NEGOTIATION62Ivan Magalhaes
1038Nicolas IturbideUnited Kingdom2026-04-13King, Christopher A Esq NEW80Bernardo Dominic
1039Izzy GarufiRussia2026-04-06Benton, John B Jr UNQUALIFIED25Bernardo Dominic
1040Chavez BriddickBrazil2026-04-10Dorl, James J Esq UNQUALIFIED48Amy Elsner
1041Maisha RulapaughRussia2026-04-07Truhlar And Truhlar Attys PROPOSAL54Ivan Magalhaes
1042Clifford RimItaly2026-04-14Benton, John B Jr UNQUALIFIED34Ivan Magalhaes
1043Sinclair WaycottIndia2026-04-20Truhlar And Truhlar Attys NEW74Ioni Bowcher
1044Mujtaba NickaSpain2026-04-19Chanay, Jeffrey A Esq RENEWAL60Stephen Shaw
1045Murillo MaletIndia2026-04-19Feiner Bros UNQUALIFIED45Ivan Magalhaes
1046Silvio SlusarskiRussia2026-04-09Dorl, James J Esq PROPOSAL21Elwin Sharvill
1047Alejandro PerinRussia2026-04-04Feltz Printing Service UNQUALIFIED26Onyama Limba
1048Isabel BowleyFrance2026-04-07Truhlar And Truhlar Attys PROPOSAL50Onyama Limba
1049Emily WhobreyBrazil2026-04-13King, Christopher A Esq QUALIFIED78Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Ricardo GauchoItalyIoni Bowcher UNQUALIFIED
Maria MarrierUnited KingdomIoni Bowcher NEW
Johnson SergiUnited KingdomElwin Sharvill UNQUALIFIED
Misaki RoysterGermanyAmy Elsner NEW
Kadeem FlosiAustraliaAmy Elsner NEGOTIATION
Juan WieserAustraliaElwin Sharvill QUALIFIED
Maisha RulapaughRussiaBernardo Dominic NEW
Aruna FigeroaAustraliaAmy Elsner RENEWAL
Alejandro PerinGermanyAmy Elsner NEW
Deepesh ChuiBrazilIoni Bowcher NEGOTIATION
Munro FerenczSpainOnyama Limba QUALIFIED
Octavia MaletRussiaAmy Elsner PROPOSAL
James ButtItalyBernardo Dominic NEGOTIATION
Octavia MaletRussiaAmy Elsner UNQUALIFIED
Maria MarrierBrazilXuxue Feng QUALIFIED
Jeanfrancois VenereBrazilAsiya Javayant QUALIFIED
Clifford RimGermanyBernardo Dominic QUALIFIED
Adams MorascaAustraliaIoni Bowcher QUALIFIED
Maria MarrierFranceAmy Elsner UNQUALIFIED
James ButtJapanAnna Fali NEGOTIATION
Mayumi KolmetzFranceStephen Shaw NEGOTIATION
Nicolas IturbideGermanyAmy Elsner RENEWAL
Salvatore StockhamIndiaOnyama Limba QUALIFIED
Isabel BowleyIndiaIvan Magalhaes UNQUALIFIED
Deepesh ChuiFranceStephen Shaw NEGOTIATION
Stacey MacleadItalyStephen Shaw UNQUALIFIED
Antonio CaudyJapanXuxue Feng RENEWAL
Kaitlin OstroskyUnited KingdomIoni Bowcher PROPOSAL
Chavez BriddickFranceXuxue Feng QUALIFIED
Rodrigues CampainItalyIoni Bowcher RENEWAL
Emily WhobreyUnited KingdomAsiya Javayant NEGOTIATION
Ashley DoeJapanIoni Bowcher RENEWAL
David DarakjyArgentinaXuxue Feng PROPOSAL
Clifford RimItalyIoni Bowcher NEW
Jones VocelkaBrazilAnna Fali QUALIFIED
Aditya KuskoIndiaIvan Magalhaes NEGOTIATION
Chavez BriddickGermanyStephen Shaw NEW
Salvatore StockhamArgentinaBernardo Dominic QUALIFIED
Kaitlin OstroskySpainAsiya Javayant QUALIFIED
David DarakjyGermanyAmy Elsner NEGOTIATION
Cody SaylorsRussiaXuxue Feng QUALIFIED
Stacey MacleadUnited KingdomAnna Fali QUALIFIED
Julie StensethRussiaAsiya Javayant QUALIFIED
Munro FerenczItalyStephen Shaw NEW
Julie StensethFranceBernardo Dominic PROPOSAL
Francesco ShinkoBrazilStephen Shaw RENEWAL
Aditya KuskoRussiaStephen Shaw QUALIFIED
Claire TollnerFranceAnna Fali PROPOSAL
Aditya KuskoAustraliaIoni Bowcher NEW
Jones VocelkaGermanyBernardo Dominic RENEWAL
Frozen Columns
Name
Emily Whobrey
Cody Saylors
Kadeem Flosi
Murillo Malet
Misaki Royster
Julie Stenseth
Izzy Garufi
Maisha Rulapaugh
James Butt
Greenwood Bolognia
Octavia Malet
Aruna Figeroa
Ashley Doe
Leon Oldroyd
Aruna Figeroa
James Butt
Salvatore Stockham
Wickens Nestle
Ivar Paprocki
Antonio Caudy
Aruna Figeroa
Adams Morasca
Adams Morasca
Johnson Sergi
Tony Foller
Kadeem Flosi
Jeanfrancois Venere
Faith Gillian
Leja Caldarera
Kaitlin Ostrosky
Johnson Sergi
Ashley Doe
Ivar Paprocki
James Butt
Jennifer Amigon
Salvatore Stockham
Tony Foller
Leon Oldroyd
Adams Morasca
Maisha Rulapaugh
Rodrigues Campain
Deepesh Chui
Munro Ferencz
Chavez Briddick
Nicolas Iturbide
Mayumi Kolmetz
Smith Glick
Francesco Shinko
Rodrigues Campain
Cody Saylors
IdCountryDate
1000France2026-03-28
1001Canada2026-04-26
1002Spain2026-04-21
1003Italy2026-04-14
1004Japan2026-04-12
1005United Kingdom2026-04-09
1006Canada2026-04-11
1007India2026-04-18
1008Russia2026-04-06
1009Argentina2026-04-16
1010United Kingdom2026-04-17
1011Japan2026-04-13
1012Russia2026-04-21
1013Japan2026-04-13
1014Argentina2026-04-17
1015Brazil2026-04-02
1016Argentina2026-04-04
1017Argentina2026-04-10
1018Australia2026-03-31
1019Italy2026-04-07
1020Japan2026-04-21
1021Italy2026-04-07
1022Spain2026-04-18
1023Russia2026-04-04
1024Canada2026-04-02
1025United Kingdom2026-04-25
1026Germany2026-04-22
1027Italy2026-04-04
1028Australia2026-04-18
1029Italy2026-04-15
1030Argentina2026-04-25
1031United Kingdom2026-04-14
1032India2026-04-15
1033Australia2026-04-24
1034Spain2026-04-24
1035Italy2026-04-02
1036Germany2026-04-24
1037Brazil2026-04-04
1038Japan2026-04-09
1039India2026-04-25
1040Argentina2026-03-29
1041Japan2026-04-05
1042United Kingdom2026-04-17
1043Italy2026-04-20
1044France2026-04-25
1045Italy2026-04-25
1046Argentina2026-04-23
1047Australia2026-04-13
1048India2026-04-11
1049Australia2026-04-10

On-Demand Data

NameIdCountryDate
Isabel Bowley1000Brazil2026-04-02
Leja Caldarera1001Spain2026-04-25
Arvin Albares1002Brazil2026-04-10
Leja Caldarera1003Japan2026-04-07
Darci Poquette1004Canada2026-04-06
Maria Marrier1005Germany2026-04-09
Juan Wieser1006Canada2026-04-13
Alejandro Perin1007Japan2026-04-09
Misaki Royster1008France2026-04-20
Silvio Slusarski1009Russia2026-04-10
Silvio Slusarski1010Japan2026-04-26
Munro Ferencz1011Brazil2026-04-04
Faith Gillian1012India2026-04-09
Kaitlin Ostrosky1013France2026-03-31
Leon Oldroyd1014Australia2026-03-31
Johnson Sergi1015India2026-04-14
Sinclair Waycott1016Canada2026-04-23
Octavia Malet1017India2026-04-25
Kadeem Flosi1018United Kingdom2026-04-04
Clifford Rim1019United Kingdom2026-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow RutaCanadaOnyama Limba NEGOTIATION
Clifford RimJapanAsiya Javayant NEW
Silvio SlusarskiGermanyXuxue Feng PROPOSAL
Jeanfrancois VenereFranceOnyama Limba QUALIFIED
Jones VocelkaRussiaAsiya Javayant QUALIFIED
Julie StensethSpainAnna Fali NEW
Ivar PaprockiSpainAmy Elsner QUALIFIED
Costa DilliardRussiaElwin Sharvill UNQUALIFIED
Jones VocelkaItalyIvan Magalhaes NEGOTIATION
Sinclair WaycottIndiaBernardo Dominic QUALIFIED
Clifford RimArgentinaOnyama Limba UNQUALIFIED
Kaitlin OstroskyUnited KingdomAsiya Javayant PROPOSAL
Darci PoquetteArgentinaXuxue Feng PROPOSAL
Tony FollerSpainXuxue Feng UNQUALIFIED
Clifford RimIndiaAsiya Javayant UNQUALIFIED
James ButtUnited KingdomXuxue Feng QUALIFIED
Mujtaba NickaIndiaAmy Elsner NEGOTIATION
Tony FollerArgentinaBernardo Dominic QUALIFIED
Jones VocelkaRussiaAsiya Javayant PROPOSAL
David DarakjyJapanBernardo Dominic UNQUALIFIED
Mujtaba NickaRussiaIoni Bowcher NEGOTIATION
Arvin AlbaresAustraliaAnna Fali RENEWAL
Isabel BowleyGermanyIvan Magalhaes NEGOTIATION
Adams MorascaUnited KingdomAnna Fali PROPOSAL
Darci PoquetteArgentinaAsiya Javayant NEGOTIATION
Claire TollnerGermanyAnna Fali RENEWAL
Silvio SlusarskiBrazilAsiya Javayant QUALIFIED
Jennifer AmigonSpainAmy Elsner NEW
Costa DilliardGermanyAnna Fali QUALIFIED
Emily WhobreyCanadaOnyama Limba PROPOSAL
Smith GlickFranceAsiya Javayant RENEWAL
Alejandro PerinUnited KingdomBernardo Dominic RENEWAL
Ricardo GauchoRussiaIoni Bowcher RENEWAL
Aika InouyeGermanyIoni Bowcher QUALIFIED
Rodrigues CampainItalyIvan Magalhaes UNQUALIFIED
Cody SaylorsGermanyXuxue Feng NEGOTIATION
Kaitlin OstroskyIndiaIvan Magalhaes QUALIFIED
Maisha RulapaughJapanIoni Bowcher NEW
Chavez BriddickArgentinaAmy Elsner UNQUALIFIED
David DarakjyJapanXuxue Feng UNQUALIFIED

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