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
Sinclair WaycottFranceStephen Shaw RENEWAL
Darci PoquetteIndiaStephen Shaw UNQUALIFIED
Emily WhobreyArgentinaBernardo Dominic QUALIFIED
Leja CaldareraIndiaAnna Fali PROPOSAL
James ButtIndiaAsiya Javayant RENEWAL
Misaki RoysterCanadaAsiya Javayant NEGOTIATION
Leja CaldareraItalyAmy Elsner UNQUALIFIED
Jefferson SchemmerAustraliaAnna Fali RENEWAL
Faith GillianFranceBernardo Dominic NEGOTIATION
Ricardo GauchoGermanyAnna Fali NEW
Maria MarrierJapanIvan Magalhaes NEW
Sinclair WaycottUnited KingdomXuxue Feng NEGOTIATION
Tony FollerItalyBernardo Dominic NEW
Murillo MaletRussiaAsiya Javayant UNQUALIFIED
Aditya KuskoRussiaXuxue Feng RENEWAL
Clifford RimSpainAnna Fali RENEWAL
Ivar PaprockiCanadaIvan Magalhaes PROPOSAL
Ricardo GauchoJapanXuxue Feng UNQUALIFIED
Deepesh ChuiJapanAsiya Javayant PROPOSAL
Ivar PaprockiSpainAnna Fali NEGOTIATION
Misaki RoysterUnited KingdomOnyama Limba UNQUALIFIED
Misaki RoysterAustraliaAsiya Javayant QUALIFIED
Juan WieserBrazilXuxue Feng NEW
Murillo MaletJapanXuxue Feng NEGOTIATION
James ButtJapanAnna Fali NEW
Maisha RulapaughAustraliaAmy Elsner NEW
Aika InouyeAustraliaOnyama Limba NEGOTIATION
Aditya KuskoUnited KingdomOnyama Limba NEW
Ivar PaprockiAustraliaStephen Shaw UNQUALIFIED
Mayumi KolmetzCanadaStephen Shaw RENEWAL
Aika InouyeArgentinaElwin Sharvill NEGOTIATION
Jeanfrancois VenereFranceAnna Fali RENEWAL
Cody SaylorsItalyBernardo Dominic NEGOTIATION
Izzy GarufiIndiaAnna Fali PROPOSAL
Izzy GarufiArgentinaOnyama Limba NEW
Cody SaylorsUnited KingdomAnna Fali PROPOSAL
Aika InouyeCanadaIvan Magalhaes RENEWAL
Juan WieserAustraliaIoni Bowcher NEGOTIATION
Wickens NestleFranceIvan Magalhaes NEGOTIATION
Wickens NestleIndiaStephen Shaw NEGOTIATION
Claire TollnerJapanIvan Magalhaes QUALIFIED
Francesco ShinkoArgentinaAmy Elsner NEW
Izzy GarufiAustraliaXuxue Feng NEGOTIATION
Antonio CaudyItalyElwin Sharvill NEGOTIATION
Deepesh ChuiGermanyStephen Shaw RENEWAL
Ashley DoeJapanBernardo Dominic NEGOTIATION
Johnson SergiArgentinaBernardo Dominic PROPOSAL
Murillo MaletItalyAnna Fali PROPOSAL
Antonio CaudyFranceStephen Shaw UNQUALIFIED
Jennifer AmigonIndiaIoni Bowcher NEW
Horizontal
NameCountryRepresentativeStatus
Maria MarrierBrazilElwin Sharvill RENEWAL
Mayumi KolmetzCanadaStephen Shaw QUALIFIED
James ButtUnited KingdomOnyama Limba QUALIFIED
Cody SaylorsUnited KingdomStephen Shaw NEW
Mujtaba NickaJapanXuxue Feng PROPOSAL
Ivar PaprockiSpainAmy Elsner QUALIFIED
Sinclair WaycottRussiaStephen Shaw UNQUALIFIED
Izzy GarufiAustraliaAnna Fali UNQUALIFIED
Munro FerenczArgentinaBernardo Dominic RENEWAL
Ivar PaprockiAustraliaStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Murillo MaletSpain2026-05-01Feiner Bros PROPOSAL45Ioni Bowcher
1001Aditya KuskoAustralia2026-05-22Chapman, Ross E Esq UNQUALIFIED66Elwin Sharvill
1002Cody SaylorsIndia2026-05-29Chapman, Ross E Esq RENEWAL46Onyama Limba
1003Ivar PaprockiIndia2026-05-16Buckley Miller Wright RENEWAL12Asiya Javayant
1004Kadeem FlosiBrazil2026-05-16Chemel, James L Cpa PROPOSAL75Amy Elsner
1005Deepesh ChuiRussia2026-05-10Morlong Associates PROPOSAL60Amy Elsner
1006David DarakjyFrance2026-05-06King, Christopher A Esq UNQUALIFIED37Bernardo Dominic
1007Salvatore StockhamJapan2026-05-23Dorl, James J Esq NEGOTIATION8Bernardo Dominic
1008Murillo MaletBrazil2026-05-28Morlong Associates NEW63Ioni Bowcher
1009Octavia MaletFrance2026-05-16Printing Dimensions PROPOSAL78Bernardo Dominic
1010Kaitlin OstroskyItaly2026-05-20Printing Dimensions UNQUALIFIED88Xuxue Feng
1011Leja CaldareraBrazil2026-05-11Feiner Bros NEW14Amy Elsner
1012Stacey MacleadGermany2026-05-28Benton, John B Jr RENEWAL91Elwin Sharvill
1013Francesco ShinkoArgentina2026-05-01Chanay, Jeffrey A Esq RENEWAL63Asiya Javayant
1014Jefferson SchemmerGermany2026-05-04Benton, John B Jr PROPOSAL84Amy Elsner
1015Juan WieserUnited Kingdom2026-05-22Benton, John B Jr PROPOSAL23Bernardo Dominic
1016Ashley DoeUnited Kingdom2026-05-30King, Christopher A Esq PROPOSAL70Onyama Limba
1017Arvin AlbaresItaly2026-05-25Commercial Press QUALIFIED47Ivan Magalhaes
1018Stacey MacleadSpain2026-05-29King, Christopher A Esq RENEWAL54Stephen Shaw
1019Ivar PaprockiRussia2026-05-25Commercial Press QUALIFIED94Ioni Bowcher
1020Claire TollnerRussia2026-05-29Dorl, James J Esq QUALIFIED69Ioni Bowcher
1021Kaitlin OstroskyCanada2026-05-30Benton, John B Jr RENEWAL86Anna Fali
1022Mayumi KolmetzRussia2026-05-13Chemel, James L Cpa QUALIFIED4Asiya Javayant
1023Jennifer AmigonArgentina2026-05-30King, Christopher A Esq QUALIFIED67Stephen Shaw
1024Clifford RimUnited Kingdom2026-05-01Chapman, Ross E Esq PROPOSAL92Bernardo Dominic
1025Emily WhobreyFrance2026-05-25Rousseaux, Michael Esq RENEWAL50Amy Elsner
1026Stacey MacleadJapan2026-05-17Truhlar And Truhlar Attys NEGOTIATION48Elwin Sharvill
1027Misaki RoysterCanada2026-05-03Commercial Press UNQUALIFIED97Asiya Javayant
1028Arvin AlbaresAustralia2026-05-24Feltz Printing Service QUALIFIED56Asiya Javayant
1029Aruna FigeroaJapan2026-05-11Dorl, James J Esq PROPOSAL25Stephen Shaw
1030Faith GillianCanada2026-05-04Chapman, Ross E Esq NEGOTIATION61Elwin Sharvill
1031Kadeem FlosiAustralia2026-05-20Morlong Associates UNQUALIFIED15Onyama Limba
1032Greenwood BologniaCanada2026-05-21Chanay, Jeffrey A Esq UNQUALIFIED12Asiya Javayant
1033James ButtCanada2026-05-21King, Christopher A Esq NEGOTIATION5Onyama Limba
1034Nicolas IturbideRussia2026-05-22Truhlar And Truhlar Attys UNQUALIFIED53Bernardo Dominic
1035Aruna FigeroaFrance2026-05-10Feltz Printing Service NEGOTIATION15Ivan Magalhaes
1036Francesco ShinkoIndia2026-05-29Benton, John B Jr UNQUALIFIED58Asiya Javayant
1037Adams MorascaIndia2026-05-30Chanay, Jeffrey A Esq UNQUALIFIED1Bernardo Dominic
1038Maisha RulapaughJapan2026-05-16Benton, John B Jr PROPOSAL61Bernardo Dominic
1039Isabel BowleyGermany2026-05-17Feiner Bros PROPOSAL51Ioni Bowcher
1040Mujtaba NickaAustralia2026-05-02Benton, John B Jr NEGOTIATION30Elwin Sharvill
1041Faith GillianAustralia2026-05-10Rangoni Of Florence NEGOTIATION74Elwin Sharvill
1042Faith GillianItaly2026-05-02Commercial Press UNQUALIFIED54Xuxue Feng
1043Antonio CaudyUnited Kingdom2026-05-13Commercial Press NEGOTIATION24Xuxue Feng
1044Mujtaba NickaFrance2026-05-20Truhlar And Truhlar Attys PROPOSAL42Stephen Shaw
1045Adams MorascaSpain2026-05-06Chapman, Ross E Esq QUALIFIED5Ivan Magalhaes
1046Juan WieserArgentina2026-05-05Rousseaux, Michael Esq UNQUALIFIED96Ioni Bowcher
1047Isabel BowleyArgentina2026-05-28Truhlar And Truhlar Attys NEW11Elwin Sharvill
1048Faith GillianRussia2026-05-08Morlong Associates QUALIFIED21Bernardo Dominic
1049Nicolas IturbideSpain2026-05-24Rousseaux, Michael Esq PROPOSAL18Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Cody SaylorsJapanOnyama Limba RENEWAL
Francesco ShinkoArgentinaIoni Bowcher PROPOSAL
Mujtaba NickaCanadaIoni Bowcher QUALIFIED
Chavez BriddickAustraliaBernardo Dominic QUALIFIED
Adams MorascaRussiaXuxue Feng PROPOSAL
Aika InouyeRussiaAnna Fali PROPOSAL
Claire TollnerSpainAsiya Javayant RENEWAL
Ricardo GauchoGermanyAsiya Javayant UNQUALIFIED
Jeanfrancois VenereRussiaBernardo Dominic RENEWAL
Claire TollnerRussiaElwin Sharvill RENEWAL
Misaki RoysterCanadaIvan Magalhaes UNQUALIFIED
Munro FerenczItalyStephen Shaw PROPOSAL
Isabel BowleyGermanyOnyama Limba PROPOSAL
Kaitlin OstroskyFranceXuxue Feng QUALIFIED
Emily WhobreyFranceIvan Magalhaes QUALIFIED
Adams MorascaAustraliaXuxue Feng RENEWAL
Kadeem FlosiJapanAmy Elsner UNQUALIFIED
Leon OldroydGermanyElwin Sharvill PROPOSAL
Leon OldroydUnited KingdomXuxue Feng NEW
Silvio SlusarskiSpainAmy Elsner RENEWAL
Misaki RoysterItalyStephen Shaw NEW
Maria MarrierIndiaXuxue Feng NEGOTIATION
Murillo MaletFranceXuxue Feng RENEWAL
Ashley DoeItalyIvan Magalhaes NEGOTIATION
Salvatore StockhamRussiaXuxue Feng NEGOTIATION
Jefferson SchemmerUnited KingdomStephen Shaw RENEWAL
Jeanfrancois VenereFranceAnna Fali RENEWAL
Ivar PaprockiRussiaOnyama Limba NEW
Kadeem FlosiItalyOnyama Limba UNQUALIFIED
Aditya KuskoUnited KingdomAmy Elsner NEGOTIATION
Sinclair WaycottBrazilIoni Bowcher QUALIFIED
Ricardo GauchoJapanXuxue Feng PROPOSAL
Maisha RulapaughUnited KingdomIvan Magalhaes QUALIFIED
Silvio SlusarskiBrazilAsiya Javayant UNQUALIFIED
Jennifer AmigonAustraliaAsiya Javayant QUALIFIED
Juan WieserSpainElwin Sharvill QUALIFIED
Aika InouyeFranceBernardo Dominic NEGOTIATION
Aditya KuskoArgentinaAnna Fali NEGOTIATION
Silvio SlusarskiRussiaAnna Fali NEW
Tony FollerGermanyBernardo Dominic RENEWAL
Clifford RimBrazilIoni Bowcher RENEWAL
Antonio CaudyItalyXuxue Feng RENEWAL
Ashley DoeCanadaAnna Fali RENEWAL
Maria MarrierGermanyElwin Sharvill NEW
Aditya KuskoJapanXuxue Feng UNQUALIFIED
Nicolas IturbideRussiaStephen Shaw PROPOSAL
Jennifer AmigonArgentinaAnna Fali NEGOTIATION
Munro FerenczAustraliaIvan Magalhaes PROPOSAL
Tony FollerJapanOnyama Limba PROPOSAL
Alejandro PerinCanadaBernardo Dominic NEGOTIATION
Frozen Columns
Name
Emily Whobrey
Jeanfrancois Venere
Adams Morasca
Johnson Sergi
David Darakjy
James Butt
Kaitlin Ostrosky
Jeanfrancois Venere
Cody Saylors
James Butt
Deepesh Chui
Ashley Doe
Ricardo Gaucho
Juan Wieser
Silvio Slusarski
Antonio Caudy
Sinclair Waycott
Ashley Doe
Chavez Briddick
David Darakjy
Silvio Slusarski
Tony Foller
Maria Marrier
Darci Poquette
Smith Glick
Claire Tollner
Leon Oldroyd
Nicolas Iturbide
Chavez Briddick
Stacey Maclead
Izzy Garufi
Rodrigues Campain
Mujtaba Nicka
Emily Whobrey
Greenwood Bolognia
Leja Caldarera
Johnson Sergi
Jefferson Schemmer
Smith Glick
Maria Marrier
Mayumi Kolmetz
Arvin Albares
Juan Wieser
Rodrigues Campain
Johnson Sergi
Juan Wieser
Darci Poquette
Sinclair Waycott
Cody Saylors
Kadeem Flosi
IdCountryDate
1000Japan2026-05-12
1001Brazil2026-05-03
1002France2026-05-08
1003Brazil2026-05-12
1004Canada2026-05-08
1005Germany2026-05-15
1006Russia2026-05-12
1007Spain2026-05-24
1008Russia2026-05-16
1009Spain2026-05-21
1010India2026-05-08
1011Russia2026-05-05
1012Russia2026-05-17
1013Canada2026-05-15
1014Brazil2026-05-18
1015Argentina2026-05-28
1016Japan2026-05-08
1017Canada2026-05-24
1018Australia2026-05-24
1019Japan2026-05-18
1020Brazil2026-05-06
1021Australia2026-05-26
1022Brazil2026-05-25
1023Japan2026-05-10
1024Germany2026-05-13
1025Russia2026-05-24
1026India2026-05-21
1027India2026-05-05
1028Canada2026-05-27
1029Brazil2026-05-10
1030Brazil2026-05-25
1031Canada2026-05-03
1032India2026-05-18
1033Canada2026-05-11
1034Spain2026-05-28
1035Japan2026-05-17
1036Germany2026-05-19
1037United Kingdom2026-05-20
1038Australia2026-05-25
1039Russia2026-05-27
1040Germany2026-05-02
1041United Kingdom2026-05-23
1042Spain2026-05-13
1043Argentina2026-05-25
1044Japan2026-05-16
1045Japan2026-05-27
1046France2026-05-20
1047Italy2026-05-23
1048Canada2026-05-23
1049Argentina2026-05-02

On-Demand Data

NameIdCountryDate
Juan Wieser1000Brazil2026-05-16
Juan Wieser1001Italy2026-05-21
Costa Dilliard1002Russia2026-05-30
Darci Poquette1003Spain2026-05-19
Darci Poquette1004Australia2026-05-07
Misaki Royster1005United Kingdom2026-05-14
Aditya Kusko1006Germany2026-05-13
Faith Gillian1007United Kingdom2026-05-18
Mayumi Kolmetz1008Germany2026-05-17
Alejandro Perin1009Australia2026-05-23
Kaitlin Ostrosky1010Canada2026-05-26
Costa Dilliard1011United Kingdom2026-05-18
Julie Stenseth1012Japan2026-05-01
Darci Poquette1013Italy2026-05-16
Clifford Rim1014United Kingdom2026-05-03
Mayumi Kolmetz1015Italy2026-05-14
Arvin Albares1016Germany2026-05-24
Maria Marrier1017Germany2026-05-20
Alejandro Perin1018Spain2026-05-22
Munro Ferencz1019Italy2026-05-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Rodrigues CampainFranceAmy Elsner NEW
Jones VocelkaItalyXuxue Feng NEGOTIATION
Costa DilliardGermanyAnna Fali UNQUALIFIED
Costa DilliardIndiaIvan Magalhaes QUALIFIED
Juan WieserRussiaXuxue Feng UNQUALIFIED
Julie StensethSpainIoni Bowcher NEW
Aditya KuskoJapanIoni Bowcher QUALIFIED
Salvatore StockhamJapanXuxue Feng PROPOSAL
Kaitlin OstroskyFranceAsiya Javayant QUALIFIED
Leon OldroydJapanElwin Sharvill NEGOTIATION
Munro FerenczAustraliaOnyama Limba NEW
James ButtItalyIoni Bowcher NEGOTIATION
Darci PoquetteCanadaOnyama Limba NEGOTIATION
Aditya KuskoIndiaIoni Bowcher UNQUALIFIED
Jones VocelkaBrazilAmy Elsner QUALIFIED
Jeanfrancois VenereArgentinaStephen Shaw NEW
Leon OldroydSpainAsiya Javayant UNQUALIFIED
Murillo MaletUnited KingdomAsiya Javayant UNQUALIFIED
Aditya KuskoAustraliaAnna Fali UNQUALIFIED
Ashley DoeArgentinaElwin Sharvill NEGOTIATION
Greenwood BologniaUnited KingdomBernardo Dominic UNQUALIFIED
Cody SaylorsIndiaAmy Elsner NEW
Kadeem FlosiArgentinaBernardo Dominic RENEWAL
Alejandro PerinSpainXuxue Feng RENEWAL
Johnson SergiBrazilAmy Elsner UNQUALIFIED
Cody SaylorsSpainAmy Elsner PROPOSAL
Leon OldroydAustraliaAmy Elsner NEW
Nicolas IturbideUnited KingdomAmy Elsner UNQUALIFIED
Claire TollnerCanadaAsiya Javayant RENEWAL
Emily WhobreyArgentinaAsiya Javayant NEGOTIATION
Maisha RulapaughSpainAnna Fali RENEWAL
Clifford RimSpainAmy Elsner NEW
Tony FollerArgentinaAmy Elsner PROPOSAL
Isabel BowleyJapanAmy Elsner RENEWAL
Cody SaylorsRussiaIvan Magalhaes QUALIFIED
Rodrigues CampainAustraliaElwin Sharvill PROPOSAL
Ashley DoeIndiaElwin Sharvill PROPOSAL
James ButtRussiaXuxue Feng QUALIFIED
Rodrigues CampainFranceAnna Fali PROPOSAL
Smith GlickFranceBernardo Dominic 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>