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
Ricardo GauchoGermanyStephen Shaw NEGOTIATION
Tony FollerIndiaStephen Shaw PROPOSAL
Clifford RimJapanXuxue Feng RENEWAL
Francesco ShinkoGermanyStephen Shaw NEGOTIATION
Isabel BowleyJapanAsiya Javayant RENEWAL
Ricardo GauchoUnited KingdomOnyama Limba NEW
Kadeem FlosiItalyAsiya Javayant RENEWAL
Mayumi KolmetzItalyIoni Bowcher NEW
Darci PoquetteCanadaIoni Bowcher NEGOTIATION
Leon OldroydJapanBernardo Dominic UNQUALIFIED
James ButtBrazilAmy Elsner QUALIFIED
Chavez BriddickAustraliaIvan Magalhaes QUALIFIED
Jeanfrancois VenereGermanyIoni Bowcher NEGOTIATION
Johnson SergiFranceAmy Elsner PROPOSAL
Faith GillianUnited KingdomIoni Bowcher NEGOTIATION
Adams MorascaIndiaAsiya Javayant UNQUALIFIED
Emily WhobreyBrazilOnyama Limba QUALIFIED
Chavez BriddickItalyXuxue Feng PROPOSAL
Aditya KuskoRussiaStephen Shaw QUALIFIED
Juan WieserUnited KingdomAmy Elsner QUALIFIED
Antonio CaudyJapanAmy Elsner NEGOTIATION
Darci PoquetteSpainAmy Elsner UNQUALIFIED
Rodrigues CampainArgentinaOnyama Limba UNQUALIFIED
Johnson SergiUnited KingdomIoni Bowcher QUALIFIED
Rodrigues CampainBrazilStephen Shaw RENEWAL
Johnson SergiItalyBernardo Dominic RENEWAL
Arvin AlbaresGermanyElwin Sharvill UNQUALIFIED
Izzy GarufiCanadaStephen Shaw PROPOSAL
Munro FerenczBrazilAmy Elsner QUALIFIED
Faith GillianItalyElwin Sharvill PROPOSAL
Ricardo GauchoUnited KingdomAsiya Javayant UNQUALIFIED
Chavez BriddickArgentinaIvan Magalhaes NEGOTIATION
Cody SaylorsCanadaAsiya Javayant UNQUALIFIED
Salvatore StockhamRussiaBernardo Dominic NEGOTIATION
Tony FollerAustraliaAsiya Javayant PROPOSAL
Murillo MaletUnited KingdomIoni Bowcher NEGOTIATION
Wickens NestleCanadaStephen Shaw QUALIFIED
Stacey MacleadCanadaAmy Elsner NEW
Darci PoquetteGermanyXuxue Feng PROPOSAL
Jeanfrancois VenereArgentinaAmy Elsner RENEWAL
Arvin AlbaresBrazilIvan Magalhaes UNQUALIFIED
Cody SaylorsBrazilOnyama Limba NEGOTIATION
Aika InouyeCanadaBernardo Dominic QUALIFIED
Aruna FigeroaBrazilOnyama Limba RENEWAL
Tony FollerCanadaXuxue Feng NEGOTIATION
Smith GlickBrazilIvan Magalhaes RENEWAL
Aditya KuskoRussiaStephen Shaw NEGOTIATION
Silvio SlusarskiRussiaOnyama Limba NEGOTIATION
Juan WieserBrazilAnna Fali NEGOTIATION
Aruna FigeroaUnited KingdomAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aruna FigeroaBrazilAnna Fali UNQUALIFIED
Maisha RulapaughRussiaXuxue Feng RENEWAL
Julie StensethRussiaXuxue Feng RENEWAL
Salvatore StockhamArgentinaOnyama Limba RENEWAL
David DarakjyItalyBernardo Dominic NEGOTIATION
Johnson SergiJapanIoni Bowcher NEW
Cody SaylorsUnited KingdomXuxue Feng NEGOTIATION
Jefferson SchemmerIndiaIoni Bowcher UNQUALIFIED
Alejandro PerinIndiaAmy Elsner RENEWAL
Costa DilliardRussiaAnna Fali NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aruna FigeroaIndia2026-04-13Buckley Miller Wright PROPOSAL40Stephen Shaw
1001Octavia MaletItaly2026-05-09Printing Dimensions RENEWAL36Anna Fali
1002James ButtIndia2026-05-08Truhlar And Truhlar Attys NEW63Stephen Shaw
1003Aika InouyeCanada2026-04-17Feiner Bros PROPOSAL46Onyama Limba
1004Aruna FigeroaItaly2026-04-21Chanay, Jeffrey A Esq UNQUALIFIED22Ivan Magalhaes
1005Murillo MaletCanada2026-05-04Commercial Press NEW1Xuxue Feng
1006Claire TollnerGermany2026-05-08Feltz Printing Service UNQUALIFIED40Anna Fali
1007Antonio CaudyUnited Kingdom2026-05-05Chapman, Ross E Esq NEW32Asiya Javayant
1008Ricardo GauchoFrance2026-05-01Morlong Associates NEW16Ivan Magalhaes
1009Kadeem FlosiBrazil2026-05-08Truhlar And Truhlar Attys NEGOTIATION89Onyama Limba
1010Greenwood BologniaRussia2026-04-30Feltz Printing Service UNQUALIFIED23Anna Fali
1011Maisha RulapaughIndia2026-04-12Buckley Miller Wright RENEWAL20Onyama Limba
1012Jeanfrancois VenereFrance2026-05-06Chemel, James L Cpa NEGOTIATION26Ivan Magalhaes
1013Salvatore StockhamJapan2026-04-28Rangoni Of Florence RENEWAL26Xuxue Feng
1014Juan WieserBrazil2026-04-13Buckley Miller Wright NEW82Onyama Limba
1015Silvio SlusarskiSpain2026-05-09Feltz Printing Service PROPOSAL61Anna Fali
1016Julie StensethAustralia2026-04-24Rangoni Of Florence NEW52Anna Fali
1017Johnson SergiItaly2026-04-12Feltz Printing Service UNQUALIFIED16Bernardo Dominic
1018Kadeem FlosiIndia2026-05-02Buckley Miller Wright RENEWAL70Ivan Magalhaes
1019Julie StensethAustralia2026-04-25King, Christopher A Esq NEGOTIATION23Bernardo Dominic
1020Misaki RoysterIndia2026-04-20Dorl, James J Esq NEGOTIATION4Bernardo Dominic
1021Morrow RutaRussia2026-05-02Feiner Bros PROPOSAL83Asiya Javayant
1022Isabel BowleyGermany2026-04-18Dorl, James J Esq NEW53Bernardo Dominic
1023David DarakjyFrance2026-05-05Morlong Associates PROPOSAL36Amy Elsner
1024Mayumi KolmetzGermany2026-04-15Rousseaux, Michael Esq RENEWAL30Bernardo Dominic
1025James ButtArgentina2026-05-07King, Christopher A Esq QUALIFIED8Ivan Magalhaes
1026Rodrigues CampainGermany2026-05-01Morlong Associates PROPOSAL56Elwin Sharvill
1027Antonio CaudyAustralia2026-05-05Chapman, Ross E Esq UNQUALIFIED85Ioni Bowcher
1028Tony FollerUnited Kingdom2026-04-27Feiner Bros NEW36Xuxue Feng
1029Octavia MaletItaly2026-05-05Feltz Printing Service NEGOTIATION13Amy Elsner
1030Jennifer AmigonCanada2026-04-26Rousseaux, Michael Esq PROPOSAL72Stephen Shaw
1031Ashley DoeRussia2026-04-14Rangoni Of Florence NEW14Stephen Shaw
1032Chavez BriddickIndia2026-04-12Benton, John B Jr QUALIFIED94Onyama Limba
1033Francesco ShinkoRussia2026-04-25Commercial Press NEGOTIATION89Bernardo Dominic
1034Tony FollerUnited Kingdom2026-05-03Feiner Bros PROPOSAL78Ioni Bowcher
1035Jones VocelkaAustralia2026-04-25Chapman, Ross E Esq RENEWAL38Asiya Javayant
1036Octavia MaletIndia2026-05-03Rousseaux, Michael Esq RENEWAL50Bernardo Dominic
1037Smith GlickAustralia2026-04-15Truhlar And Truhlar Attys UNQUALIFIED58Ioni Bowcher
1038David DarakjyUnited Kingdom2026-05-01Printing Dimensions PROPOSAL77Ioni Bowcher
1039Kaitlin OstroskyJapan2026-05-04King, Christopher A Esq UNQUALIFIED20Asiya Javayant
1040Tony FollerArgentina2026-04-16Buckley Miller Wright UNQUALIFIED4Anna Fali
1041Jennifer AmigonJapan2026-04-12Dorl, James J Esq UNQUALIFIED88Ivan Magalhaes
1042Smith GlickFrance2026-04-30Benton, John B Jr NEGOTIATION52Elwin Sharvill
1043Jeanfrancois VenereGermany2026-04-14Morlong Associates NEGOTIATION31Onyama Limba
1044Munro FerenczJapan2026-04-25Buckley Miller Wright RENEWAL34Stephen Shaw
1045Cody SaylorsRussia2026-04-11Feiner Bros NEGOTIATION99Onyama Limba
1046Claire TollnerUnited Kingdom2026-04-30Truhlar And Truhlar Attys QUALIFIED59Amy Elsner
1047Cody SaylorsUnited Kingdom2026-04-12Rousseaux, Michael Esq QUALIFIED72Asiya Javayant
1048Julie StensethSpain2026-05-03Truhlar And Truhlar Attys UNQUALIFIED27Bernardo Dominic
1049Jeanfrancois VenereCanada2026-04-23Buckley Miller Wright UNQUALIFIED37Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Johnson SergiItalyXuxue Feng UNQUALIFIED
Julie StensethFranceIvan Magalhaes PROPOSAL
Jennifer AmigonJapanElwin Sharvill NEW
Johnson SergiAustraliaStephen Shaw RENEWAL
Antonio CaudyIndiaAmy Elsner PROPOSAL
Leja CaldareraSpainOnyama Limba RENEWAL
Jones VocelkaIndiaAmy Elsner RENEWAL
Deepesh ChuiFranceAnna Fali PROPOSAL
Mujtaba NickaJapanIvan Magalhaes NEW
Izzy GarufiBrazilOnyama Limba QUALIFIED
Murillo MaletCanadaAnna Fali RENEWAL
Jones VocelkaIndiaAnna Fali UNQUALIFIED
Ashley DoeJapanOnyama Limba UNQUALIFIED
Faith GillianRussiaElwin Sharvill UNQUALIFIED
Leja CaldareraSpainIoni Bowcher RENEWAL
Darci PoquetteSpainStephen Shaw QUALIFIED
Smith GlickBrazilElwin Sharvill RENEWAL
Jones VocelkaIndiaElwin Sharvill QUALIFIED
Deepesh ChuiJapanElwin Sharvill NEW
Chavez BriddickJapanIoni Bowcher UNQUALIFIED
Deepesh ChuiUnited KingdomAmy Elsner QUALIFIED
Faith GillianJapanIvan Magalhaes NEW
Ricardo GauchoIndiaBernardo Dominic RENEWAL
Chavez BriddickIndiaElwin Sharvill PROPOSAL
Tony FollerItalyIoni Bowcher NEGOTIATION
Jones VocelkaCanadaStephen Shaw RENEWAL
Silvio SlusarskiJapanElwin Sharvill PROPOSAL
Francesco ShinkoIndiaIvan Magalhaes NEW
Tony FollerFranceBernardo Dominic NEW
Maria MarrierItalyXuxue Feng NEGOTIATION
Francesco ShinkoItalyOnyama Limba NEW
Aika InouyeBrazilBernardo Dominic NEGOTIATION
Costa DilliardIndiaIoni Bowcher QUALIFIED
Costa DilliardCanadaXuxue Feng NEW
Sinclair WaycottItalyXuxue Feng NEGOTIATION
Rodrigues CampainItalyIoni Bowcher QUALIFIED
Johnson SergiItalyAsiya Javayant NEW
Silvio SlusarskiIndiaElwin Sharvill QUALIFIED
Julie StensethArgentinaBernardo Dominic QUALIFIED
Francesco ShinkoRussiaXuxue Feng PROPOSAL
Alejandro PerinGermanyBernardo Dominic UNQUALIFIED
Chavez BriddickRussiaIvan Magalhaes QUALIFIED
Rodrigues CampainJapanBernardo Dominic QUALIFIED
Costa DilliardIndiaOnyama Limba NEGOTIATION
Costa DilliardRussiaAsiya Javayant RENEWAL
Costa DilliardRussiaIvan Magalhaes UNQUALIFIED
Maisha RulapaughIndiaAnna Fali UNQUALIFIED
Isabel BowleyUnited KingdomElwin Sharvill NEGOTIATION
Kaitlin OstroskyIndiaElwin Sharvill UNQUALIFIED
Silvio SlusarskiJapanAmy Elsner NEGOTIATION
Frozen Columns
Name
Sinclair Waycott
Emily Whobrey
Aruna Figeroa
Maria Marrier
David Darakjy
Mayumi Kolmetz
Julie Stenseth
Maisha Rulapaugh
Sinclair Waycott
Cody Saylors
Jones Vocelka
Ashley Doe
Smith Glick
Jefferson Schemmer
Greenwood Bolognia
Darci Poquette
Cody Saylors
Greenwood Bolognia
Jones Vocelka
Greenwood Bolognia
Faith Gillian
Deepesh Chui
Maria Marrier
Ivar Paprocki
Greenwood Bolognia
Ivar Paprocki
Jones Vocelka
Aruna Figeroa
Leja Caldarera
Adams Morasca
Salvatore Stockham
Salvatore Stockham
Murillo Malet
Murillo Malet
Faith Gillian
Maisha Rulapaugh
Arvin Albares
Cody Saylors
Jennifer Amigon
Misaki Royster
Jones Vocelka
Darci Poquette
Claire Tollner
Wickens Nestle
Aruna Figeroa
Jeanfrancois Venere
Antonio Caudy
Cody Saylors
Silvio Slusarski
Faith Gillian
IdCountryDate
1000Spain2026-04-18
1001Russia2026-05-06
1002Argentina2026-04-27
1003Russia2026-04-21
1004United Kingdom2026-05-08
1005United Kingdom2026-05-04
1006United Kingdom2026-04-25
1007Brazil2026-05-10
1008Japan2026-04-23
1009Spain2026-05-04
1010Germany2026-05-09
1011Brazil2026-05-05
1012Argentina2026-04-16
1013Russia2026-05-04
1014Japan2026-04-26
1015India2026-04-23
1016Russia2026-04-24
1017Russia2026-04-16
1018Canada2026-04-21
1019Argentina2026-04-18
1020France2026-05-09
1021Spain2026-04-12
1022Italy2026-05-10
1023Australia2026-05-04
1024Australia2026-04-30
1025France2026-05-07
1026Brazil2026-05-04
1027Brazil2026-04-12
1028Argentina2026-05-03
1029Russia2026-05-04
1030Canada2026-04-17
1031Russia2026-04-17
1032India2026-05-10
1033Italy2026-04-24
1034Italy2026-04-29
1035Argentina2026-04-15
1036Brazil2026-04-21
1037Japan2026-05-03
1038India2026-05-07
1039Russia2026-04-16
1040United Kingdom2026-04-22
1041Italy2026-05-01
1042Germany2026-04-21
1043Russia2026-04-23
1044Russia2026-04-29
1045United Kingdom2026-05-07
1046Russia2026-04-23
1047Italy2026-04-13
1048India2026-05-06
1049Australia2026-04-13

On-Demand Data

NameIdCountryDate
Aruna Figeroa1000Canada2026-04-28
Clifford Rim1001Russia2026-05-05
Silvio Slusarski1002France2026-04-13
Munro Ferencz1003Argentina2026-05-09
Jefferson Schemmer1004Russia2026-04-29
Darci Poquette1005Brazil2026-04-25
Isabel Bowley1006Australia2026-04-27
Misaki Royster1007Spain2026-05-10
Ashley Doe1008Canada2026-04-14
Clifford Rim1009Russia2026-05-08
Tony Foller1010Spain2026-04-29
Juan Wieser1011Spain2026-05-09
Ivar Paprocki1012Italy2026-05-08
Octavia Malet1013Canada2026-04-13
Leja Caldarera1014Argentina2026-04-21
Ricardo Gaucho1015India2026-04-28
Maisha Rulapaugh1016France2026-05-10
Costa Dilliard1017Brazil2026-05-03
Smith Glick1018Canada2026-05-06
Nicolas Iturbide1019France2026-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio CaudyFranceOnyama Limba QUALIFIED
Mayumi KolmetzIndiaIoni Bowcher NEW
Nicolas IturbideBrazilAmy Elsner UNQUALIFIED
Deepesh ChuiFranceAsiya Javayant NEGOTIATION
Kadeem FlosiIndiaIoni Bowcher NEW
Juan WieserSpainBernardo Dominic RENEWAL
Costa DilliardIndiaAsiya Javayant NEGOTIATION
Juan WieserSpainBernardo Dominic RENEWAL
Aditya KuskoCanadaElwin Sharvill PROPOSAL
Ricardo GauchoArgentinaBernardo Dominic NEGOTIATION
Darci PoquetteAustraliaOnyama Limba RENEWAL
Mujtaba NickaAustraliaXuxue Feng RENEWAL
Wickens NestleItalyStephen Shaw PROPOSAL
Faith GillianFranceStephen Shaw UNQUALIFIED
Claire TollnerFranceStephen Shaw PROPOSAL
Tony FollerBrazilAnna Fali NEGOTIATION
Maria MarrierGermanyAsiya Javayant RENEWAL
Nicolas IturbideArgentinaXuxue Feng UNQUALIFIED
Claire TollnerRussiaIoni Bowcher PROPOSAL
James ButtFranceAsiya Javayant QUALIFIED
James ButtSpainIvan Magalhaes UNQUALIFIED
Izzy GarufiJapanXuxue Feng QUALIFIED
Francesco ShinkoRussiaElwin Sharvill NEGOTIATION
Emily WhobreyFranceOnyama Limba NEGOTIATION
Alejandro PerinItalyAnna Fali NEW
Leja CaldareraUnited KingdomAnna Fali QUALIFIED
Leja CaldareraItalyIvan Magalhaes UNQUALIFIED
Darci PoquetteAustraliaAmy Elsner NEGOTIATION
Misaki RoysterIndiaAnna Fali QUALIFIED
Arvin AlbaresFranceElwin Sharvill UNQUALIFIED
Arvin AlbaresSpainOnyama Limba PROPOSAL
Darci PoquetteJapanIvan Magalhaes UNQUALIFIED
Claire TollnerUnited KingdomAsiya Javayant UNQUALIFIED
Maria MarrierArgentinaXuxue Feng NEW
Aruna FigeroaFranceIvan Magalhaes NEW
Darci PoquetteIndiaAmy Elsner QUALIFIED
Kadeem FlosiCanadaAmy Elsner NEGOTIATION
Maisha RulapaughIndiaAsiya Javayant QUALIFIED
Mujtaba NickaCanadaIvan Magalhaes RENEWAL
Claire TollnerCanadaElwin 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>