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
Aruna FigeroaArgentinaOnyama Limba NEW
Clifford RimAustraliaXuxue Feng NEW
Izzy GarufiSpainAnna Fali NEW
Chavez BriddickRussiaBernardo Dominic RENEWAL
Antonio CaudyGermanyElwin Sharvill QUALIFIED
Julie StensethFranceIoni Bowcher NEGOTIATION
Claire TollnerIndiaAnna Fali NEW
Maria MarrierFranceOnyama Limba PROPOSAL
Smith GlickUnited KingdomIvan Magalhaes QUALIFIED
Maisha RulapaughCanadaStephen Shaw NEGOTIATION
Aika InouyeSpainAmy Elsner NEW
Ricardo GauchoFranceAnna Fali NEW
Aika InouyeCanadaStephen Shaw NEGOTIATION
Aditya KuskoRussiaIoni Bowcher QUALIFIED
Leon OldroydIndiaBernardo Dominic NEGOTIATION
Juan WieserArgentinaElwin Sharvill NEW
Ivar PaprockiAustraliaAsiya Javayant QUALIFIED
Octavia MaletIndiaIoni Bowcher QUALIFIED
Johnson SergiGermanyElwin Sharvill QUALIFIED
Jones VocelkaRussiaOnyama Limba QUALIFIED
Kadeem FlosiGermanyXuxue Feng RENEWAL
Aditya KuskoFranceBernardo Dominic QUALIFIED
Tony FollerJapanOnyama Limba PROPOSAL
Greenwood BologniaItalyAmy Elsner UNQUALIFIED
Kadeem FlosiArgentinaBernardo Dominic UNQUALIFIED
Ashley DoeArgentinaOnyama Limba RENEWAL
Johnson SergiSpainOnyama Limba RENEWAL
Johnson SergiRussiaIoni Bowcher RENEWAL
Antonio CaudyUnited KingdomAmy Elsner PROPOSAL
Aruna FigeroaUnited KingdomIvan Magalhaes QUALIFIED
Faith GillianRussiaBernardo Dominic UNQUALIFIED
Mayumi KolmetzJapanBernardo Dominic RENEWAL
Kaitlin OstroskySpainBernardo Dominic NEGOTIATION
Deepesh ChuiAustraliaXuxue Feng RENEWAL
Silvio SlusarskiUnited KingdomIvan Magalhaes RENEWAL
Maria MarrierGermanyAmy Elsner NEGOTIATION
Arvin AlbaresJapanAmy Elsner NEGOTIATION
Izzy GarufiItalyAmy Elsner UNQUALIFIED
Rodrigues CampainIndiaAsiya Javayant QUALIFIED
Murillo MaletUnited KingdomBernardo Dominic QUALIFIED
Greenwood BologniaCanadaXuxue Feng NEGOTIATION
Faith GillianArgentinaElwin Sharvill PROPOSAL
Izzy GarufiGermanyIoni Bowcher NEW
Octavia MaletBrazilXuxue Feng UNQUALIFIED
Leon OldroydItalyXuxue Feng NEGOTIATION
Mujtaba NickaRussiaIoni Bowcher RENEWAL
Jones VocelkaAustraliaStephen Shaw UNQUALIFIED
Ivar PaprockiJapanStephen Shaw NEGOTIATION
Aika InouyeBrazilAmy Elsner NEGOTIATION
Greenwood BologniaItalyIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aruna FigeroaAustraliaElwin Sharvill UNQUALIFIED
Silvio SlusarskiItalyIoni Bowcher RENEWAL
Octavia MaletBrazilAsiya Javayant NEGOTIATION
Octavia MaletItalyIvan Magalhaes NEGOTIATION
Munro FerenczItalyXuxue Feng QUALIFIED
Jones VocelkaIndiaAmy Elsner UNQUALIFIED
Sinclair WaycottFranceStephen Shaw RENEWAL
Darci PoquetteRussiaAmy Elsner NEGOTIATION
David DarakjyIndiaAmy Elsner PROPOSAL
Ashley DoeBrazilBernardo Dominic PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Francesco ShinkoCanada2026-06-14Chanay, Jeffrey A Esq PROPOSAL23Onyama Limba
1001Cody SaylorsAustralia2026-05-25Chapman, Ross E Esq NEGOTIATION1Amy Elsner
1002Maria MarrierAustralia2026-06-01Dorl, James J Esq NEGOTIATION85Stephen Shaw
1003Morrow RutaBrazil2026-05-28Commercial Press QUALIFIED0Anna Fali
1004Maisha RulapaughRussia2026-06-17Truhlar And Truhlar Attys RENEWAL0Stephen Shaw
1005Alejandro PerinItaly2026-06-19Rousseaux, Michael Esq QUALIFIED7Onyama Limba
1006Leon OldroydRussia2026-06-20Commercial Press NEW22Anna Fali
1007Darci PoquetteBrazil2026-06-11King, Christopher A Esq NEW43Ivan Magalhaes
1008Chavez BriddickGermany2026-06-21Chapman, Ross E Esq PROPOSAL0Ioni Bowcher
1009Kaitlin OstroskyGermany2026-06-01Chanay, Jeffrey A Esq PROPOSAL90Amy Elsner
1010Francesco ShinkoFrance2026-06-17Rousseaux, Michael Esq RENEWAL57Asiya Javayant
1011Costa DilliardArgentina2026-05-27Printing Dimensions RENEWAL42Onyama Limba
1012Rodrigues CampainGermany2026-06-12Truhlar And Truhlar Attys PROPOSAL54Ivan Magalhaes
1013Costa DilliardGermany2026-06-21Rousseaux, Michael Esq RENEWAL68Amy Elsner
1014Jones VocelkaAustralia2026-06-13Rousseaux, Michael Esq NEW22Ioni Bowcher
1015Faith GillianSpain2026-06-07Commercial Press PROPOSAL56Stephen Shaw
1016Johnson SergiGermany2026-05-26Morlong Associates UNQUALIFIED8Xuxue Feng
1017Clifford RimSpain2026-06-02Chemel, James L Cpa NEW90Stephen Shaw
1018Ricardo GauchoCanada2026-06-22King, Christopher A Esq PROPOSAL90Ivan Magalhaes
1019Chavez BriddickUnited Kingdom2026-06-02Rousseaux, Michael Esq QUALIFIED50Stephen Shaw
1020Emily WhobreySpain2026-05-27King, Christopher A Esq UNQUALIFIED28Bernardo Dominic
1021Morrow RutaUnited Kingdom2026-05-31Benton, John B Jr NEGOTIATION56Xuxue Feng
1022Misaki RoysterCanada2026-06-19Feltz Printing Service RENEWAL27Bernardo Dominic
1023Deepesh ChuiGermany2026-06-04Chanay, Jeffrey A Esq UNQUALIFIED35Ivan Magalhaes
1024James ButtJapan2026-06-14Rousseaux, Michael Esq NEGOTIATION52Elwin Sharvill
1025Octavia MaletRussia2026-06-04Benton, John B Jr NEW13Elwin Sharvill
1026Costa DilliardIndia2026-06-10Chemel, James L Cpa QUALIFIED7Onyama Limba
1027Faith GillianUnited Kingdom2026-06-12Chemel, James L Cpa RENEWAL89Onyama Limba
1028Morrow RutaIndia2026-05-31Benton, John B Jr UNQUALIFIED72Asiya Javayant
1029Jones VocelkaAustralia2026-06-06Rousseaux, Michael Esq QUALIFIED20Asiya Javayant
1030James ButtBrazil2026-06-15Morlong Associates PROPOSAL67Stephen Shaw
1031Faith GillianItaly2026-06-21Dorl, James J Esq UNQUALIFIED6Onyama Limba
1032Stacey MacleadRussia2026-05-28King, Christopher A Esq NEGOTIATION81Anna Fali
1033Maria MarrierItaly2026-06-07Feiner Bros UNQUALIFIED26Xuxue Feng
1034Ashley DoeCanada2026-05-28Rousseaux, Michael Esq QUALIFIED90Onyama Limba
1035Johnson SergiAustralia2026-05-27King, Christopher A Esq NEGOTIATION69Ivan Magalhaes
1036Clifford RimAustralia2026-06-19King, Christopher A Esq RENEWAL79Amy Elsner
1037Ashley DoeAustralia2026-06-07Benton, John B Jr UNQUALIFIED12Elwin Sharvill
1038Arvin AlbaresBrazil2026-06-03Feltz Printing Service NEGOTIATION86Bernardo Dominic
1039Jones VocelkaJapan2026-06-08King, Christopher A Esq NEGOTIATION74Onyama Limba
1040Claire TollnerGermany2026-06-22Rousseaux, Michael Esq RENEWAL2Bernardo Dominic
1041Jefferson SchemmerUnited Kingdom2026-06-10Buckley Miller Wright RENEWAL88Stephen Shaw
1042Izzy GarufiAustralia2026-05-26Printing Dimensions NEW62Amy Elsner
1043Johnson SergiBrazil2026-06-17Buckley Miller Wright NEW41Xuxue Feng
1044Darci PoquetteUnited Kingdom2026-06-05King, Christopher A Esq QUALIFIED10Xuxue Feng
1045Ivar PaprockiJapan2026-06-05Dorl, James J Esq UNQUALIFIED68Bernardo Dominic
1046Ashley DoeUnited Kingdom2026-06-14Chemel, James L Cpa RENEWAL53Ivan Magalhaes
1047Misaki RoysterGermany2026-06-11Dorl, James J Esq NEW22Ioni Bowcher
1048Salvatore StockhamFrance2026-06-03Chanay, Jeffrey A Esq PROPOSAL97Bernardo Dominic
1049Morrow RutaGermany2026-06-05Buckley Miller Wright QUALIFIED74Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Leon OldroydItalyStephen Shaw QUALIFIED
Sinclair WaycottBrazilAnna Fali QUALIFIED
Maria MarrierAustraliaStephen Shaw PROPOSAL
Octavia MaletBrazilStephen Shaw NEGOTIATION
Emily WhobreyAustraliaIvan Magalhaes QUALIFIED
Emily WhobreyBrazilOnyama Limba RENEWAL
Adams MorascaArgentinaElwin Sharvill QUALIFIED
James ButtArgentinaAnna Fali NEW
Cody SaylorsJapanStephen Shaw UNQUALIFIED
Kaitlin OstroskyArgentinaIoni Bowcher QUALIFIED
Arvin AlbaresCanadaIoni Bowcher QUALIFIED
Ricardo GauchoSpainStephen Shaw UNQUALIFIED
Tony FollerCanadaStephen Shaw NEGOTIATION
Silvio SlusarskiArgentinaIoni Bowcher QUALIFIED
Aika InouyeFranceOnyama Limba NEW
James ButtAustraliaOnyama Limba PROPOSAL
Misaki RoysterSpainAsiya Javayant RENEWAL
Izzy GarufiSpainAnna Fali QUALIFIED
Mayumi KolmetzAustraliaBernardo Dominic NEW
Murillo MaletGermanyAnna Fali RENEWAL
Faith GillianBrazilAnna Fali UNQUALIFIED
Leon OldroydItalyBernardo Dominic NEGOTIATION
Ricardo GauchoJapanAsiya Javayant NEGOTIATION
Arvin AlbaresJapanAsiya Javayant RENEWAL
Leon OldroydGermanyXuxue Feng NEW
Maisha RulapaughArgentinaAnna Fali PROPOSAL
Silvio SlusarskiRussiaBernardo Dominic RENEWAL
Greenwood BologniaRussiaAsiya Javayant QUALIFIED
Morrow RutaCanadaXuxue Feng RENEWAL
Jeanfrancois VenereFranceBernardo Dominic QUALIFIED
James ButtJapanIvan Magalhaes QUALIFIED
Jefferson SchemmerCanadaIoni Bowcher UNQUALIFIED
Ashley DoeSpainBernardo Dominic NEGOTIATION
Deepesh ChuiUnited KingdomElwin Sharvill RENEWAL
Julie StensethBrazilXuxue Feng PROPOSAL
Mujtaba NickaRussiaAmy Elsner QUALIFIED
James ButtRussiaIoni Bowcher UNQUALIFIED
Smith GlickSpainAsiya Javayant RENEWAL
Jefferson SchemmerAustraliaElwin Sharvill RENEWAL
Smith GlickSpainElwin Sharvill NEGOTIATION
Leon OldroydSpainOnyama Limba QUALIFIED
Adams MorascaIndiaBernardo Dominic QUALIFIED
David DarakjyJapanBernardo Dominic NEGOTIATION
Greenwood BologniaBrazilAmy Elsner QUALIFIED
Izzy GarufiJapanXuxue Feng QUALIFIED
Jefferson SchemmerRussiaIoni Bowcher QUALIFIED
Rodrigues CampainIndiaAsiya Javayant NEGOTIATION
Maria MarrierAustraliaAsiya Javayant UNQUALIFIED
Emily WhobreyUnited KingdomAnna Fali RENEWAL
Kaitlin OstroskyRussiaIoni Bowcher PROPOSAL
Frozen Columns
Name
Tony Foller
Chavez Briddick
Salvatore Stockham
Tony Foller
Sinclair Waycott
Ashley Doe
Chavez Briddick
Aditya Kusko
Nicolas Iturbide
Johnson Sergi
Aditya Kusko
Smith Glick
Stacey Maclead
Arvin Albares
David Darakjy
Julie Stenseth
Jones Vocelka
Ricardo Gaucho
Mayumi Kolmetz
Kaitlin Ostrosky
Cody Saylors
Ashley Doe
Johnson Sergi
Cody Saylors
Munro Ferencz
Aruna Figeroa
Kadeem Flosi
Izzy Garufi
Maisha Rulapaugh
Antonio Caudy
Leja Caldarera
Tony Foller
Maisha Rulapaugh
Chavez Briddick
Wickens Nestle
Smith Glick
Ivar Paprocki
Juan Wieser
Rodrigues Campain
Sinclair Waycott
Tony Foller
Jefferson Schemmer
Jennifer Amigon
Aruna Figeroa
Misaki Royster
Izzy Garufi
Jefferson Schemmer
Sinclair Waycott
Wickens Nestle
Faith Gillian
IdCountryDate
1000Brazil2026-06-01
1001India2026-05-24
1002Japan2026-06-22
1003Australia2026-05-25
1004Australia2026-06-20
1005Spain2026-06-01
1006Canada2026-06-15
1007Germany2026-06-19
1008Argentina2026-06-07
1009Canada2026-06-22
1010Australia2026-06-20
1011Australia2026-06-22
1012India2026-06-16
1013Canada2026-06-14
1014Brazil2026-05-25
1015Germany2026-05-24
1016Germany2026-06-12
1017Germany2026-06-16
1018Germany2026-06-01
1019Russia2026-05-26
1020France2026-05-28
1021Argentina2026-05-30
1022United Kingdom2026-05-24
1023France2026-06-22
1024Spain2026-06-05
1025France2026-06-06
1026Brazil2026-06-14
1027France2026-05-25
1028Brazil2026-06-05
1029United Kingdom2026-06-15
1030Spain2026-06-19
1031Brazil2026-06-17
1032Australia2026-06-21
1033Argentina2026-06-18
1034Japan2026-06-09
1035Germany2026-06-08
1036Brazil2026-05-28
1037Italy2026-05-30
1038France2026-06-17
1039Russia2026-06-05
1040Argentina2026-06-18
1041Brazil2026-05-28
1042United Kingdom2026-05-27
1043India2026-06-12
1044Brazil2026-05-25
1045France2026-06-04
1046India2026-06-11
1047Russia2026-06-17
1048Australia2026-06-14
1049Argentina2026-06-11

On-Demand Data

NameIdCountryDate
Juan Wieser1000Canada2026-06-01
Maisha Rulapaugh1001Russia2026-06-16
Costa Dilliard1002Canada2026-05-31
Maria Marrier1003United Kingdom2026-06-07
Darci Poquette1004Australia2026-05-26
Jones Vocelka1005Russia2026-06-12
Clifford Rim1006Australia2026-05-28
Greenwood Bolognia1007Germany2026-06-14
Ivar Paprocki1008Germany2026-06-22
James Butt1009Brazil2026-06-08
Ricardo Gaucho1010Italy2026-06-04
Leon Oldroyd1011Brazil2026-06-16
Leon Oldroyd1012Italy2026-06-07
Faith Gillian1013Italy2026-06-11
Maisha Rulapaugh1014Spain2026-06-04
Faith Gillian1015Australia2026-06-12
Emily Whobrey1016Canada2026-05-28
Sinclair Waycott1017Russia2026-06-06
Darci Poquette1018India2026-06-07
Tony Foller1019Argentina2026-06-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria MarrierCanadaAnna Fali UNQUALIFIED
Maria MarrierCanadaAnna Fali UNQUALIFIED
Sinclair WaycottIndiaIvan Magalhaes RENEWAL
Maria MarrierSpainBernardo Dominic QUALIFIED
Misaki RoysterIndiaAmy Elsner PROPOSAL
Kaitlin OstroskyAustraliaXuxue Feng RENEWAL
Smith GlickGermanyAmy Elsner RENEWAL
Leon OldroydArgentinaAsiya Javayant NEGOTIATION
Jennifer AmigonSpainAsiya Javayant NEGOTIATION
David DarakjyJapanOnyama Limba QUALIFIED
Adams MorascaJapanOnyama Limba NEW
Ivar PaprockiIndiaIvan Magalhaes NEGOTIATION
Octavia MaletGermanyStephen Shaw QUALIFIED
Kadeem FlosiJapanIvan Magalhaes NEW
Darci PoquetteItalyBernardo Dominic QUALIFIED
Claire TollnerRussiaBernardo Dominic PROPOSAL
Antonio CaudySpainStephen Shaw UNQUALIFIED
Nicolas IturbideCanadaStephen Shaw RENEWAL
Maria MarrierAustraliaOnyama Limba NEW
Aika InouyeBrazilAnna Fali NEGOTIATION
Ricardo GauchoSpainAnna Fali QUALIFIED
Morrow RutaGermanyIvan Magalhaes NEGOTIATION
Jennifer AmigonGermanyBernardo Dominic NEGOTIATION
Mayumi KolmetzFranceXuxue Feng UNQUALIFIED
Jennifer AmigonBrazilOnyama Limba NEW
Salvatore StockhamBrazilXuxue Feng NEGOTIATION
James ButtRussiaAsiya Javayant RENEWAL
Maisha RulapaughRussiaBernardo Dominic PROPOSAL
Mujtaba NickaSpainStephen Shaw QUALIFIED
Jones VocelkaAustraliaAsiya Javayant UNQUALIFIED
Mujtaba NickaCanadaIvan Magalhaes QUALIFIED
Maria MarrierItalyAnna Fali NEW
Sinclair WaycottGermanyElwin Sharvill NEGOTIATION
Aruna FigeroaIndiaStephen Shaw UNQUALIFIED
Salvatore StockhamJapanStephen Shaw NEW
Salvatore StockhamItalyAmy Elsner NEGOTIATION
Leon OldroydSpainIoni Bowcher PROPOSAL
Smith GlickCanadaStephen Shaw UNQUALIFIED
Misaki RoysterIndiaAnna Fali QUALIFIED
Jones VocelkaCanadaAmy Elsner QUALIFIED

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