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
Silvio SlusarskiSpainIoni Bowcher UNQUALIFIED
Alejandro PerinAustraliaAnna Fali NEGOTIATION
Kaitlin OstroskyJapanIoni Bowcher PROPOSAL
Salvatore StockhamIndiaIoni Bowcher NEW
Darci PoquetteSpainElwin Sharvill PROPOSAL
Wickens NestleAustraliaAsiya Javayant NEGOTIATION
Nicolas IturbideArgentinaAmy Elsner QUALIFIED
Ricardo GauchoAustraliaStephen Shaw QUALIFIED
Mujtaba NickaBrazilAnna Fali PROPOSAL
Arvin AlbaresRussiaIvan Magalhaes RENEWAL
Ricardo GauchoFranceAnna Fali PROPOSAL
Wickens NestleGermanyAmy Elsner NEGOTIATION
Jones VocelkaBrazilStephen Shaw QUALIFIED
Octavia MaletBrazilAnna Fali NEW
Smith GlickIndiaAmy Elsner QUALIFIED
Ivar PaprockiAustraliaIvan Magalhaes PROPOSAL
Arvin AlbaresSpainOnyama Limba PROPOSAL
Maisha RulapaughJapanOnyama Limba RENEWAL
Johnson SergiArgentinaAnna Fali RENEWAL
Isabel BowleyIndiaAmy Elsner NEGOTIATION
Costa DilliardCanadaBernardo Dominic NEW
Aruna FigeroaAustraliaAmy Elsner PROPOSAL
Nicolas IturbideUnited KingdomBernardo Dominic PROPOSAL
Octavia MaletArgentinaBernardo Dominic QUALIFIED
David DarakjyArgentinaAmy Elsner NEW
Izzy GarufiIndiaAmy Elsner NEGOTIATION
Costa DilliardItalyStephen Shaw NEW
Salvatore StockhamFranceBernardo Dominic UNQUALIFIED
Ivar PaprockiAustraliaAnna Fali PROPOSAL
James ButtJapanBernardo Dominic QUALIFIED
Murillo MaletCanadaAmy Elsner NEW
Sinclair WaycottBrazilBernardo Dominic NEW
Kadeem FlosiAustraliaIvan Magalhaes NEGOTIATION
Deepesh ChuiItalyAmy Elsner NEGOTIATION
Nicolas IturbideAustraliaIoni Bowcher PROPOSAL
Arvin AlbaresSpainBernardo Dominic NEGOTIATION
Ricardo GauchoSpainIoni Bowcher QUALIFIED
Chavez BriddickIndiaOnyama Limba UNQUALIFIED
Julie StensethItalyAmy Elsner NEGOTIATION
Ivar PaprockiBrazilIoni Bowcher UNQUALIFIED
Jennifer AmigonGermanyIvan Magalhaes PROPOSAL
Johnson SergiJapanXuxue Feng NEGOTIATION
Aditya KuskoBrazilXuxue Feng PROPOSAL
Faith GillianAustraliaIoni Bowcher UNQUALIFIED
Wickens NestleRussiaStephen Shaw NEW
Leon OldroydUnited KingdomIvan Magalhaes UNQUALIFIED
Stacey MacleadRussiaOnyama Limba PROPOSAL
Wickens NestleBrazilIoni Bowcher NEW
Faith GillianGermanyAsiya Javayant NEW
Murillo MaletFranceIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Ivar PaprockiGermanyStephen Shaw UNQUALIFIED
Maisha RulapaughGermanyAsiya Javayant NEW
Antonio CaudySpainIoni Bowcher RENEWAL
Jennifer AmigonCanadaAnna Fali RENEWAL
Faith GillianUnited KingdomStephen Shaw PROPOSAL
Francesco ShinkoGermanyBernardo Dominic QUALIFIED
Cody SaylorsBrazilIvan Magalhaes QUALIFIED
Morrow RutaArgentinaAsiya Javayant UNQUALIFIED
Deepesh ChuiArgentinaStephen Shaw NEW
Faith GillianItalyElwin Sharvill NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson SchemmerCanada2026-05-22Feltz Printing Service QUALIFIED27Elwin Sharvill
1001Adams MorascaGermany2026-06-17Benton, John B Jr PROPOSAL49Asiya Javayant
1002Ricardo GauchoCanada2026-05-31Buckley Miller Wright QUALIFIED13Ioni Bowcher
1003Stacey MacleadIndia2026-06-15Feltz Printing Service RENEWAL51Anna Fali
1004Aditya KuskoFrance2026-05-23Dorl, James J Esq PROPOSAL28Stephen Shaw
1005Jeanfrancois VenereUnited Kingdom2026-06-06Benton, John B Jr UNQUALIFIED71Anna Fali
1006Faith GillianAustralia2026-05-31King, Christopher A Esq RENEWAL55Ivan Magalhaes
1007James ButtCanada2026-06-10Chapman, Ross E Esq NEW45Asiya Javayant
1008Nicolas IturbideArgentina2026-05-27King, Christopher A Esq NEW17Onyama Limba
1009Chavez BriddickGermany2026-05-23King, Christopher A Esq NEGOTIATION76Amy Elsner
1010Claire TollnerIndia2026-06-19Feltz Printing Service PROPOSAL64Asiya Javayant
1011David DarakjyCanada2026-06-11Benton, John B Jr UNQUALIFIED98Bernardo Dominic
1012Arvin AlbaresArgentina2026-05-25Rousseaux, Michael Esq PROPOSAL78Onyama Limba
1013Cody SaylorsGermany2026-05-25Feiner Bros UNQUALIFIED28Ioni Bowcher
1014David DarakjyAustralia2026-05-26Benton, John B Jr PROPOSAL73Stephen Shaw
1015Julie StensethAustralia2026-05-22Chemel, James L Cpa PROPOSAL39Bernardo Dominic
1016Morrow RutaGermany2026-05-23Feiner Bros RENEWAL70Bernardo Dominic
1017Ivar PaprockiGermany2026-06-02King, Christopher A Esq NEW58Amy Elsner
1018Mayumi KolmetzRussia2026-06-12Feltz Printing Service RENEWAL90Ioni Bowcher
1019Sinclair WaycottUnited Kingdom2026-05-27Dorl, James J Esq NEW42Stephen Shaw
1020Stacey MacleadSpain2026-06-15Feltz Printing Service RENEWAL51Asiya Javayant
1021Francesco ShinkoAustralia2026-06-03King, Christopher A Esq NEGOTIATION23Ioni Bowcher
1022Johnson SergiCanada2026-05-23Buckley Miller Wright UNQUALIFIED46Bernardo Dominic
1023Wickens NestleSpain2026-06-13Feiner Bros NEGOTIATION68Stephen Shaw
1024Maria MarrierIndia2026-05-24Rousseaux, Michael Esq QUALIFIED96Elwin Sharvill
1025Kaitlin OstroskyUnited Kingdom2026-06-14Benton, John B Jr UNQUALIFIED45Ioni Bowcher
1026Greenwood BologniaJapan2026-06-11Commercial Press RENEWAL5Amy Elsner
1027Silvio SlusarskiIndia2026-06-08Chanay, Jeffrey A Esq UNQUALIFIED45Xuxue Feng
1028Mayumi KolmetzIndia2026-06-09Truhlar And Truhlar Attys QUALIFIED21Elwin Sharvill
1029Octavia MaletItaly2026-06-04King, Christopher A Esq UNQUALIFIED96Onyama Limba
1030Maria MarrierSpain2026-06-15Truhlar And Truhlar Attys NEW36Bernardo Dominic
1031Claire TollnerSpain2026-05-23Feiner Bros QUALIFIED75Ivan Magalhaes
1032Aruna FigeroaFrance2026-05-29Feltz Printing Service PROPOSAL47Ivan Magalhaes
1033Mayumi KolmetzCanada2026-05-31Feiner Bros RENEWAL15Onyama Limba
1034Salvatore StockhamAustralia2026-06-14Rousseaux, Michael Esq PROPOSAL36Onyama Limba
1035Munro FerenczUnited Kingdom2026-05-29Feltz Printing Service UNQUALIFIED79Ivan Magalhaes
1036Emily WhobreyAustralia2026-06-20Rangoni Of Florence PROPOSAL72Asiya Javayant
1037Murillo MaletAustralia2026-06-16Printing Dimensions UNQUALIFIED61Xuxue Feng
1038Leja CaldareraGermany2026-06-18Printing Dimensions NEGOTIATION65Xuxue Feng
1039Jennifer AmigonJapan2026-05-28Buckley Miller Wright NEGOTIATION93Amy Elsner
1040Morrow RutaArgentina2026-06-02Truhlar And Truhlar Attys RENEWAL35Onyama Limba
1041Wickens NestleAustralia2026-06-17Chapman, Ross E Esq RENEWAL52Xuxue Feng
1042Octavia MaletBrazil2026-05-27Feltz Printing Service NEW45Xuxue Feng
1043Jennifer AmigonUnited Kingdom2026-06-11King, Christopher A Esq QUALIFIED15Amy Elsner
1044Juan WieserItaly2026-06-04Rangoni Of Florence RENEWAL61Asiya Javayant
1045Jeanfrancois VenereArgentina2026-05-25Dorl, James J Esq UNQUALIFIED39Xuxue Feng
1046Wickens NestleGermany2026-06-12Rousseaux, Michael Esq PROPOSAL0Bernardo Dominic
1047Salvatore StockhamUnited Kingdom2026-05-24Rangoni Of Florence UNQUALIFIED55Anna Fali
1048Salvatore StockhamItaly2026-06-07Feltz Printing Service NEGOTIATION21Elwin Sharvill
1049James ButtJapan2026-06-01Dorl, James J Esq PROPOSAL60Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Ivar PaprockiFranceAnna Fali QUALIFIED
Leja CaldareraUnited KingdomElwin Sharvill PROPOSAL
Tony FollerItalyOnyama Limba PROPOSAL
Francesco ShinkoGermanyXuxue Feng RENEWAL
James ButtBrazilIvan Magalhaes NEW
Mayumi KolmetzArgentinaXuxue Feng PROPOSAL
Greenwood BologniaAustraliaBernardo Dominic UNQUALIFIED
Wickens NestleAustraliaElwin Sharvill PROPOSAL
Maisha RulapaughArgentinaElwin Sharvill RENEWAL
Octavia MaletBrazilOnyama Limba NEW
Aditya KuskoUnited KingdomAmy Elsner PROPOSAL
Stacey MacleadArgentinaAmy Elsner PROPOSAL
Smith GlickItalyOnyama Limba RENEWAL
Morrow RutaUnited KingdomElwin Sharvill QUALIFIED
Silvio SlusarskiCanadaIoni Bowcher PROPOSAL
Maisha RulapaughRussiaAmy Elsner NEGOTIATION
Antonio CaudyCanadaBernardo Dominic QUALIFIED
Aditya KuskoArgentinaXuxue Feng QUALIFIED
Jefferson SchemmerAustraliaXuxue Feng NEGOTIATION
Smith GlickJapanAsiya Javayant PROPOSAL
Johnson SergiFranceAnna Fali NEW
Costa DilliardIndiaStephen Shaw NEW
Aditya KuskoCanadaXuxue Feng RENEWAL
Octavia MaletJapanIoni Bowcher PROPOSAL
Salvatore StockhamIndiaAsiya Javayant QUALIFIED
Costa DilliardCanadaIvan Magalhaes QUALIFIED
Claire TollnerJapanBernardo Dominic PROPOSAL
Aruna FigeroaBrazilElwin Sharvill QUALIFIED
Arvin AlbaresBrazilIoni Bowcher NEW
Isabel BowleyFranceAnna Fali NEW
Maisha RulapaughItalyXuxue Feng NEW
Antonio CaudyIndiaStephen Shaw RENEWAL
Maria MarrierBrazilIoni Bowcher QUALIFIED
Munro FerenczCanadaElwin Sharvill QUALIFIED
Francesco ShinkoGermanyStephen Shaw NEW
Sinclair WaycottRussiaStephen Shaw UNQUALIFIED
Jones VocelkaRussiaXuxue Feng NEW
Rodrigues CampainUnited KingdomStephen Shaw PROPOSAL
Octavia MaletCanadaOnyama Limba NEW
Alejandro PerinItalyStephen Shaw UNQUALIFIED
Ashley DoeRussiaIoni Bowcher PROPOSAL
David DarakjyCanadaAnna Fali RENEWAL
Darci PoquetteJapanBernardo Dominic QUALIFIED
Wickens NestleCanadaIvan Magalhaes NEW
Kaitlin OstroskyCanadaStephen Shaw UNQUALIFIED
David DarakjyIndiaElwin Sharvill RENEWAL
Silvio SlusarskiItalyAmy Elsner UNQUALIFIED
Ivar PaprockiItalyIoni Bowcher PROPOSAL
Chavez BriddickJapanElwin Sharvill RENEWAL
Nicolas IturbideRussiaAmy Elsner QUALIFIED
Frozen Columns
Name
Mujtaba Nicka
Sinclair Waycott
Faith Gillian
Aditya Kusko
Jefferson Schemmer
Kadeem Flosi
Mayumi Kolmetz
Jefferson Schemmer
Jones Vocelka
Leja Caldarera
Tony Foller
Emily Whobrey
Juan Wieser
Clifford Rim
Sinclair Waycott
Emily Whobrey
Ivar Paprocki
Smith Glick
Johnson Sergi
Misaki Royster
Ashley Doe
Ashley Doe
Kadeem Flosi
Leon Oldroyd
Juan Wieser
Greenwood Bolognia
Sinclair Waycott
Rodrigues Campain
Mujtaba Nicka
Munro Ferencz
Jefferson Schemmer
Costa Dilliard
Claire Tollner
Francesco Shinko
David Darakjy
Claire Tollner
Rodrigues Campain
Rodrigues Campain
Misaki Royster
Arvin Albares
James Butt
James Butt
Cody Saylors
Kaitlin Ostrosky
Mayumi Kolmetz
Kaitlin Ostrosky
Aditya Kusko
Leja Caldarera
Arvin Albares
Wickens Nestle
IdCountryDate
1000Germany2026-06-20
1001Australia2026-05-22
1002Italy2026-06-06
1003Russia2026-06-20
1004Germany2026-06-03
1005France2026-05-31
1006Germany2026-06-04
1007France2026-06-16
1008Spain2026-05-26
1009Italy2026-06-16
1010United Kingdom2026-06-07
1011United Kingdom2026-06-16
1012Japan2026-05-31
1013Japan2026-05-28
1014Argentina2026-06-02
1015Russia2026-06-01
1016United Kingdom2026-05-28
1017Germany2026-06-02
1018Brazil2026-06-20
1019Italy2026-05-23
1020United Kingdom2026-06-05
1021France2026-05-27
1022Argentina2026-06-10
1023Japan2026-06-03
1024Spain2026-05-26
1025United Kingdom2026-06-12
1026United Kingdom2026-06-14
1027India2026-06-02
1028Spain2026-06-03
1029France2026-06-04
1030Australia2026-05-28
1031India2026-06-05
1032Russia2026-06-06
1033France2026-06-09
1034Argentina2026-06-15
1035United Kingdom2026-06-19
1036Brazil2026-05-22
1037United Kingdom2026-05-22
1038Brazil2026-05-22
1039Australia2026-06-12
1040India2026-06-04
1041Russia2026-06-07
1042Japan2026-05-27
1043France2026-06-09
1044Italy2026-06-08
1045France2026-06-07
1046Germany2026-06-18
1047Australia2026-06-19
1048Japan2026-06-01
1049Argentina2026-05-28

On-Demand Data

NameIdCountryDate
Aditya Kusko1000Brazil2026-06-13
Isabel Bowley1001Japan2026-05-30
Francesco Shinko1002Canada2026-06-09
Julie Stenseth1003Australia2026-06-09
Aditya Kusko1004Australia2026-06-01
Kaitlin Ostrosky1005India2026-06-03
Aruna Figeroa1006United Kingdom2026-06-02
Ashley Doe1007India2026-06-04
Murillo Malet1008Argentina2026-06-01
Emily Whobrey1009India2026-06-20
Tony Foller1010Japan2026-05-23
Maisha Rulapaugh1011Spain2026-05-28
Wickens Nestle1012Japan2026-05-31
Chavez Briddick1013India2026-05-23
Faith Gillian1014Italy2026-06-10
Jeanfrancois Venere1015United Kingdom2026-06-06
Sinclair Waycott1016Spain2026-06-20
Misaki Royster1017France2026-06-18
Mujtaba Nicka1018India2026-06-06
Morrow Ruta1019Brazil2026-06-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Arvin AlbaresIndiaIoni Bowcher NEW
Izzy GarufiBrazilElwin Sharvill PROPOSAL
Kaitlin OstroskySpainIoni Bowcher NEGOTIATION
Nicolas IturbideItalyIvan Magalhaes NEW
Isabel BowleyIndiaBernardo Dominic NEGOTIATION
Jennifer AmigonJapanAnna Fali QUALIFIED
Juan WieserCanadaIoni Bowcher NEW
Francesco ShinkoIndiaXuxue Feng NEGOTIATION
Arvin AlbaresJapanAsiya Javayant NEGOTIATION
Aditya KuskoItalyStephen Shaw UNQUALIFIED
Chavez BriddickIndiaAmy Elsner UNQUALIFIED
Mayumi KolmetzItalyAmy Elsner UNQUALIFIED
Jones VocelkaRussiaIvan Magalhaes NEGOTIATION
Aditya KuskoJapanIvan Magalhaes NEW
Arvin AlbaresArgentinaOnyama Limba NEGOTIATION
Mayumi KolmetzArgentinaAsiya Javayant UNQUALIFIED
Stacey MacleadAustraliaOnyama Limba NEW
Julie StensethFranceStephen Shaw NEGOTIATION
Salvatore StockhamAustraliaAnna Fali RENEWAL
Jefferson SchemmerSpainXuxue Feng QUALIFIED
Salvatore StockhamRussiaIoni Bowcher UNQUALIFIED
Adams MorascaCanadaAnna Fali RENEWAL
Claire TollnerBrazilBernardo Dominic NEGOTIATION
Jeanfrancois VenereCanadaXuxue Feng NEW
James ButtUnited KingdomIvan Magalhaes RENEWAL
Aruna FigeroaSpainAnna Fali QUALIFIED
Kadeem FlosiSpainBernardo Dominic RENEWAL
Nicolas IturbideSpainXuxue Feng NEW
Mayumi KolmetzItalyBernardo Dominic NEW
Morrow RutaArgentinaXuxue Feng PROPOSAL
Jeanfrancois VenereRussiaElwin Sharvill UNQUALIFIED
Emily WhobreyGermanyAmy Elsner UNQUALIFIED
Jeanfrancois VenereCanadaBernardo Dominic QUALIFIED
Isabel BowleyRussiaBernardo Dominic PROPOSAL
Misaki RoysterItalyAmy Elsner QUALIFIED
Munro FerenczItalyStephen Shaw PROPOSAL
Leon OldroydUnited KingdomElwin Sharvill NEGOTIATION
Kaitlin OstroskyArgentinaBernardo Dominic NEW
Leja CaldareraSpainAmy Elsner RENEWAL
Alejandro PerinSpainIoni Bowcher PROPOSAL

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