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
Cody SaylorsAustraliaBernardo Dominic RENEWAL
James ButtFranceIvan Magalhaes NEGOTIATION
Izzy GarufiBrazilBernardo Dominic UNQUALIFIED
Juan WieserIndiaIvan Magalhaes NEGOTIATION
Smith GlickCanadaIvan Magalhaes PROPOSAL
Faith GillianFranceXuxue Feng QUALIFIED
Octavia MaletItalyAsiya Javayant RENEWAL
Kadeem FlosiArgentinaBernardo Dominic NEW
Jeanfrancois VenereAustraliaOnyama Limba PROPOSAL
Rodrigues CampainSpainBernardo Dominic NEGOTIATION
Aditya KuskoAustraliaBernardo Dominic UNQUALIFIED
Silvio SlusarskiIndiaIoni Bowcher NEGOTIATION
Emily WhobreyFranceXuxue Feng NEGOTIATION
Nicolas IturbideFranceElwin Sharvill NEGOTIATION
Mayumi KolmetzGermanyIoni Bowcher QUALIFIED
Cody SaylorsIndiaIvan Magalhaes PROPOSAL
David DarakjyGermanyIoni Bowcher QUALIFIED
Mayumi KolmetzCanadaIvan Magalhaes NEW
Tony FollerAustraliaAsiya Javayant NEW
Johnson SergiAustraliaAmy Elsner RENEWAL
Francesco ShinkoAustraliaBernardo Dominic PROPOSAL
Octavia MaletItalyAsiya Javayant NEGOTIATION
Aruna FigeroaAustraliaStephen Shaw QUALIFIED
Greenwood BologniaBrazilIoni Bowcher UNQUALIFIED
Stacey MacleadFranceAsiya Javayant NEGOTIATION
Alejandro PerinFranceBernardo Dominic RENEWAL
Nicolas IturbideSpainElwin Sharvill QUALIFIED
Aruna FigeroaGermanyAsiya Javayant QUALIFIED
Alejandro PerinFranceAmy Elsner RENEWAL
Misaki RoysterRussiaXuxue Feng PROPOSAL
Mujtaba NickaSpainBernardo Dominic RENEWAL
Stacey MacleadIndiaXuxue Feng QUALIFIED
Maria MarrierJapanStephen Shaw NEGOTIATION
Juan WieserUnited KingdomElwin Sharvill PROPOSAL
Sinclair WaycottUnited KingdomIoni Bowcher UNQUALIFIED
Leon OldroydArgentinaElwin Sharvill PROPOSAL
Darci PoquetteGermanyStephen Shaw QUALIFIED
Izzy GarufiArgentinaAnna Fali RENEWAL
Leja CaldareraSpainIvan Magalhaes UNQUALIFIED
Maria MarrierUnited KingdomAmy Elsner QUALIFIED
Isabel BowleyGermanyIoni Bowcher NEGOTIATION
Silvio SlusarskiIndiaOnyama Limba RENEWAL
Faith GillianArgentinaOnyama Limba UNQUALIFIED
Mayumi KolmetzUnited KingdomAmy Elsner QUALIFIED
Julie StensethUnited KingdomAsiya Javayant RENEWAL
Francesco ShinkoRussiaOnyama Limba RENEWAL
Alejandro PerinCanadaAnna Fali NEW
Arvin AlbaresUnited KingdomAmy Elsner RENEWAL
Johnson SergiCanadaAmy Elsner UNQUALIFIED
Aruna FigeroaRussiaBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aditya KuskoAustraliaAsiya Javayant RENEWAL
Chavez BriddickSpainBernardo Dominic RENEWAL
Nicolas IturbideRussiaAmy Elsner NEGOTIATION
Kadeem FlosiAustraliaAmy Elsner NEW
Kadeem FlosiUnited KingdomXuxue Feng PROPOSAL
Adams MorascaGermanyAsiya Javayant NEW
Misaki RoysterUnited KingdomAsiya Javayant NEW
Ashley DoeArgentinaOnyama Limba NEW
Kadeem FlosiArgentinaAmy Elsner QUALIFIED
Juan WieserGermanyIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Claire TollnerGermany2026-04-09Rousseaux, Michael Esq NEGOTIATION62Anna Fali
1001Sinclair WaycottIndia2026-04-10King, Christopher A Esq UNQUALIFIED26Onyama Limba
1002Johnson SergiAustralia2026-04-11Morlong Associates RENEWAL31Amy Elsner
1003Mayumi KolmetzRussia2026-04-22King, Christopher A Esq RENEWAL68Ioni Bowcher
1004Mujtaba NickaArgentina2026-04-13Feiner Bros NEGOTIATION37Elwin Sharvill
1005Misaki RoysterAustralia2026-04-10Buckley Miller Wright NEGOTIATION61Ivan Magalhaes
1006Jones VocelkaGermany2026-04-30Commercial Press NEW45Xuxue Feng
1007Maisha RulapaughRussia2026-05-03Rousseaux, Michael Esq RENEWAL84Asiya Javayant
1008Ricardo GauchoArgentina2026-05-04Buckley Miller Wright NEW57Elwin Sharvill
1009Misaki RoysterRussia2026-04-22Commercial Press PROPOSAL28Xuxue Feng
1010Darci PoquetteArgentina2026-05-06Benton, John B Jr NEW88Stephen Shaw
1011Ivar PaprockiSpain2026-04-26Feiner Bros NEW23Ioni Bowcher
1012Ivar PaprockiSpain2026-04-13Chapman, Ross E Esq PROPOSAL54Ioni Bowcher
1013Kadeem FlosiAustralia2026-05-03Commercial Press UNQUALIFIED40Elwin Sharvill
1014Sinclair WaycottArgentina2026-04-12Feltz Printing Service UNQUALIFIED16Elwin Sharvill
1015Octavia MaletCanada2026-04-28Feiner Bros PROPOSAL77Onyama Limba
1016Jones VocelkaRussia2026-05-08Commercial Press NEGOTIATION59Asiya Javayant
1017Darci PoquetteBrazil2026-04-12Commercial Press QUALIFIED45Amy Elsner
1018Arvin AlbaresUnited Kingdom2026-05-07Chapman, Ross E Esq NEGOTIATION40Ivan Magalhaes
1019Julie StensethUnited Kingdom2026-04-18Morlong Associates RENEWAL58Onyama Limba
1020Ivar PaprockiArgentina2026-04-17Feiner Bros NEGOTIATION77Ivan Magalhaes
1021Johnson SergiGermany2026-04-19Rangoni Of Florence RENEWAL52Asiya Javayant
1022Munro FerenczFrance2026-05-07Rousseaux, Michael Esq RENEWAL30Elwin Sharvill
1023Cody SaylorsUnited Kingdom2026-05-07Morlong Associates NEW18Ivan Magalhaes
1024Silvio SlusarskiItaly2026-04-13Rangoni Of Florence NEGOTIATION70Stephen Shaw
1025Greenwood BologniaFrance2026-05-03Chapman, Ross E Esq UNQUALIFIED81Xuxue Feng
1026Smith GlickFrance2026-04-22Feiner Bros NEW83Onyama Limba
1027Octavia MaletUnited Kingdom2026-04-25Benton, John B Jr RENEWAL24Amy Elsner
1028Deepesh ChuiItaly2026-04-12Morlong Associates NEW81Ivan Magalhaes
1029Francesco ShinkoUnited Kingdom2026-04-13Feltz Printing Service NEGOTIATION86Ivan Magalhaes
1030Aika InouyeBrazil2026-04-16Truhlar And Truhlar Attys NEGOTIATION33Xuxue Feng
1031Adams MorascaArgentina2026-04-17King, Christopher A Esq UNQUALIFIED17Amy Elsner
1032Murillo MaletJapan2026-04-10King, Christopher A Esq RENEWAL66Ivan Magalhaes
1033Juan WieserSpain2026-04-25Truhlar And Truhlar Attys UNQUALIFIED4Stephen Shaw
1034Nicolas IturbideGermany2026-05-07Truhlar And Truhlar Attys NEGOTIATION58Asiya Javayant
1035Izzy GarufiJapan2026-05-06Morlong Associates NEW27Stephen Shaw
1036Julie StensethIndia2026-04-24Buckley Miller Wright RENEWAL88Stephen Shaw
1037Julie StensethAustralia2026-04-24Chapman, Ross E Esq UNQUALIFIED37Ivan Magalhaes
1038Juan WieserIndia2026-05-01Chemel, James L Cpa UNQUALIFIED14Anna Fali
1039Izzy GarufiJapan2026-05-07Commercial Press NEW76Asiya Javayant
1040Misaki RoysterBrazil2026-05-07Dorl, James J Esq NEW91Elwin Sharvill
1041Sinclair WaycottBrazil2026-04-14Rousseaux, Michael Esq NEW62Xuxue Feng
1042Murillo MaletCanada2026-04-10Rousseaux, Michael Esq QUALIFIED58Anna Fali
1043Darci PoquetteAustralia2026-04-21Dorl, James J Esq UNQUALIFIED87Anna Fali
1044Murillo MaletBrazil2026-04-10Buckley Miller Wright NEGOTIATION18Onyama Limba
1045Claire TollnerBrazil2026-04-14Commercial Press NEGOTIATION37Xuxue Feng
1046Francesco ShinkoBrazil2026-04-23Rangoni Of Florence QUALIFIED69Xuxue Feng
1047Stacey MacleadFrance2026-04-14Dorl, James J Esq UNQUALIFIED78Elwin Sharvill
1048Munro FerenczRussia2026-04-16Feiner Bros NEGOTIATION69Xuxue Feng
1049Darci PoquetteItaly2026-05-08Buckley Miller Wright RENEWAL74Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Antonio CaudyJapanAsiya Javayant QUALIFIED
Ivar PaprockiJapanAsiya Javayant UNQUALIFIED
Juan WieserUnited KingdomAnna Fali NEW
Cody SaylorsFranceAmy Elsner PROPOSAL
Izzy GarufiFranceAmy Elsner NEGOTIATION
Ashley DoeItalyAmy Elsner PROPOSAL
Aika InouyeItalyAnna Fali NEW
Costa DilliardItalyBernardo Dominic PROPOSAL
Aditya KuskoIndiaElwin Sharvill PROPOSAL
Costa DilliardGermanyBernardo Dominic RENEWAL
Wickens NestleGermanyXuxue Feng QUALIFIED
Alejandro PerinBrazilStephen Shaw PROPOSAL
Wickens NestleGermanyStephen Shaw QUALIFIED
Morrow RutaBrazilAnna Fali NEGOTIATION
Ivar PaprockiGermanyAmy Elsner PROPOSAL
Kadeem FlosiCanadaIoni Bowcher PROPOSAL
Isabel BowleyUnited KingdomIvan Magalhaes NEGOTIATION
Costa DilliardCanadaXuxue Feng UNQUALIFIED
Jefferson SchemmerGermanyXuxue Feng UNQUALIFIED
Ricardo GauchoAustraliaAmy Elsner RENEWAL
Deepesh ChuiItalyAsiya Javayant QUALIFIED
Ricardo GauchoGermanyAmy Elsner PROPOSAL
Smith GlickUnited KingdomIvan Magalhaes NEW
Leja CaldareraBrazilAsiya Javayant NEGOTIATION
Misaki RoysterIndiaAnna Fali QUALIFIED
Ashley DoeAustraliaBernardo Dominic UNQUALIFIED
Ivar PaprockiSpainIvan Magalhaes QUALIFIED
Costa DilliardBrazilElwin Sharvill PROPOSAL
Maisha RulapaughRussiaIoni Bowcher UNQUALIFIED
Stacey MacleadUnited KingdomStephen Shaw NEW
Emily WhobreyUnited KingdomAnna Fali QUALIFIED
Ashley DoeSpainAnna Fali RENEWAL
Aruna FigeroaFranceAnna Fali RENEWAL
Julie StensethGermanyIoni Bowcher NEGOTIATION
Maria MarrierUnited KingdomOnyama Limba QUALIFIED
Julie StensethSpainIoni Bowcher QUALIFIED
Faith GillianFranceXuxue Feng NEW
Clifford RimAustraliaAmy Elsner NEGOTIATION
Clifford RimCanadaAnna Fali NEGOTIATION
Mayumi KolmetzRussiaBernardo Dominic QUALIFIED
Deepesh ChuiItalyIoni Bowcher QUALIFIED
Francesco ShinkoCanadaIoni Bowcher NEW
Adams MorascaCanadaStephen Shaw PROPOSAL
Jones VocelkaArgentinaAmy Elsner RENEWAL
Juan WieserIndiaAsiya Javayant PROPOSAL
Leon OldroydGermanyXuxue Feng UNQUALIFIED
Julie StensethAustraliaElwin Sharvill RENEWAL
Emily WhobreyGermanyAnna Fali PROPOSAL
Emily WhobreyIndiaBernardo Dominic UNQUALIFIED
Alejandro PerinRussiaXuxue Feng PROPOSAL
Frozen Columns
Name
Kaitlin Ostrosky
Ivar Paprocki
David Darakjy
Nicolas Iturbide
Faith Gillian
Smith Glick
Jefferson Schemmer
Leon Oldroyd
Juan Wieser
Kaitlin Ostrosky
Costa Dilliard
Jennifer Amigon
Jennifer Amigon
Wickens Nestle
Wickens Nestle
Wickens Nestle
Rodrigues Campain
Sinclair Waycott
Costa Dilliard
Deepesh Chui
Maisha Rulapaugh
Misaki Royster
Sinclair Waycott
Jones Vocelka
Johnson Sergi
James Butt
Faith Gillian
Aditya Kusko
Tony Foller
Murillo Malet
Nicolas Iturbide
Kadeem Flosi
Cody Saylors
James Butt
James Butt
Stacey Maclead
Mujtaba Nicka
Leja Caldarera
Sinclair Waycott
Johnson Sergi
Mayumi Kolmetz
Izzy Garufi
Deepesh Chui
Sinclair Waycott
Greenwood Bolognia
Ashley Doe
David Darakjy
Maisha Rulapaugh
James Butt
Sinclair Waycott
IdCountryDate
1000Italy2026-04-20
1001Australia2026-05-06
1002Japan2026-04-27
1003Spain2026-05-05
1004Argentina2026-05-01
1005Canada2026-05-01
1006India2026-04-11
1007Argentina2026-04-10
1008Japan2026-05-05
1009Canada2026-04-15
1010Canada2026-04-09
1011Canada2026-04-29
1012Russia2026-05-03
1013India2026-05-03
1014Russia2026-04-09
1015United Kingdom2026-05-06
1016Japan2026-04-28
1017France2026-05-01
1018Italy2026-04-14
1019Italy2026-05-03
1020Argentina2026-04-28
1021Brazil2026-04-20
1022Italy2026-04-14
1023Russia2026-04-15
1024Russia2026-05-01
1025Australia2026-04-29
1026Argentina2026-05-02
1027Australia2026-04-17
1028Germany2026-04-20
1029India2026-04-24
1030Spain2026-05-01
1031Japan2026-04-13
1032Argentina2026-04-17
1033Argentina2026-04-24
1034Brazil2026-04-12
1035Argentina2026-04-28
1036United Kingdom2026-04-17
1037United Kingdom2026-04-24
1038Russia2026-04-22
1039United Kingdom2026-04-30
1040Argentina2026-05-07
1041Argentina2026-04-24
1042India2026-04-25
1043Japan2026-04-16
1044Spain2026-05-04
1045Australia2026-05-06
1046Italy2026-04-13
1047Brazil2026-04-29
1048France2026-05-05
1049Italy2026-04-28

On-Demand Data

NameIdCountryDate
Juan Wieser1000United Kingdom2026-04-17
Maria Marrier1001Canada2026-04-17
Wickens Nestle1002France2026-04-18
Juan Wieser1003Germany2026-04-25
Jeanfrancois Venere1004Brazil2026-05-08
Rodrigues Campain1005Australia2026-04-14
Johnson Sergi1006Germany2026-05-08
Sinclair Waycott1007India2026-04-25
Isabel Bowley1008France2026-04-12
Isabel Bowley1009United Kingdom2026-04-29
Rodrigues Campain1010Australia2026-05-07
Aditya Kusko1011France2026-04-21
Adams Morasca1012United Kingdom2026-04-14
Sinclair Waycott1013Spain2026-04-15
Leon Oldroyd1014India2026-05-02
Arvin Albares1015Argentina2026-04-11
Smith Glick1016Japan2026-04-13
Nicolas Iturbide1017Canada2026-04-14
Darci Poquette1018Argentina2026-05-03
Maria Marrier1019Spain2026-04-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson SergiCanadaOnyama Limba UNQUALIFIED
Deepesh ChuiArgentinaBernardo Dominic PROPOSAL
Misaki RoysterJapanStephen Shaw NEGOTIATION
Costa DilliardAustraliaAmy Elsner UNQUALIFIED
Jennifer AmigonBrazilOnyama Limba NEW
Clifford RimRussiaXuxue Feng PROPOSAL
Wickens NestleUnited KingdomXuxue Feng NEGOTIATION
Salvatore StockhamBrazilAnna Fali NEGOTIATION
Jefferson SchemmerItalyStephen Shaw QUALIFIED
Ivar PaprockiBrazilBernardo Dominic QUALIFIED
Deepesh ChuiRussiaAnna Fali UNQUALIFIED
Smith GlickArgentinaAnna Fali QUALIFIED
Greenwood BologniaArgentinaAmy Elsner NEGOTIATION
Ricardo GauchoFranceXuxue Feng QUALIFIED
Faith GillianFranceIvan Magalhaes PROPOSAL
Aruna FigeroaBrazilAnna Fali NEW
Aruna FigeroaFranceStephen Shaw UNQUALIFIED
Izzy GarufiAustraliaAnna Fali RENEWAL
Salvatore StockhamCanadaOnyama Limba UNQUALIFIED
Deepesh ChuiAustraliaAnna Fali NEGOTIATION
Kadeem FlosiGermanyOnyama Limba NEGOTIATION
Faith GillianIndiaAnna Fali RENEWAL
Silvio SlusarskiRussiaIoni Bowcher QUALIFIED
Leon OldroydUnited KingdomBernardo Dominic UNQUALIFIED
Alejandro PerinJapanIoni Bowcher NEW
Stacey MacleadItalyXuxue Feng RENEWAL
Jeanfrancois VenereCanadaIvan Magalhaes RENEWAL
Greenwood BologniaIndiaElwin Sharvill RENEWAL
Clifford RimGermanyAmy Elsner PROPOSAL
Isabel BowleyItalyAmy Elsner NEW
Izzy GarufiItalyXuxue Feng PROPOSAL
Leon OldroydRussiaStephen Shaw RENEWAL
Tony FollerItalyIvan Magalhaes UNQUALIFIED
Greenwood BologniaJapanElwin Sharvill UNQUALIFIED
Clifford RimBrazilAnna Fali RENEWAL
Francesco ShinkoJapanOnyama Limba PROPOSAL
Aruna FigeroaGermanyOnyama Limba RENEWAL
Jefferson SchemmerFranceAsiya Javayant UNQUALIFIED
James ButtFranceAsiya Javayant PROPOSAL
Leja CaldareraJapanBernardo Dominic RENEWAL

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