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
Leja CaldareraArgentinaOnyama Limba NEGOTIATION
Cody SaylorsUnited KingdomIoni Bowcher RENEWAL
Aditya KuskoAustraliaAnna Fali NEW
Mujtaba NickaAustraliaAsiya Javayant RENEWAL
Izzy GarufiAustraliaIoni Bowcher PROPOSAL
Morrow RutaGermanyIoni Bowcher PROPOSAL
Jeanfrancois VenereFranceAnna Fali PROPOSAL
James ButtUnited KingdomIoni Bowcher RENEWAL
David DarakjyRussiaAsiya Javayant UNQUALIFIED
Misaki RoysterItalyBernardo Dominic NEW
Aditya KuskoGermanyXuxue Feng UNQUALIFIED
Aditya KuskoUnited KingdomIoni Bowcher NEW
Jefferson SchemmerUnited KingdomAnna Fali NEGOTIATION
Aditya KuskoAustraliaAnna Fali NEW
Darci PoquetteSpainStephen Shaw UNQUALIFIED
Adams MorascaBrazilAsiya Javayant UNQUALIFIED
Ashley DoeCanadaElwin Sharvill PROPOSAL
Ivar PaprockiArgentinaXuxue Feng PROPOSAL
Smith GlickRussiaIvan Magalhaes RENEWAL
Leja CaldareraJapanIvan Magalhaes RENEWAL
Stacey MacleadGermanyAnna Fali NEGOTIATION
Tony FollerJapanOnyama Limba NEW
Ricardo GauchoAustraliaAnna Fali NEW
Ashley DoeFranceXuxue Feng QUALIFIED
Juan WieserItalyIoni Bowcher PROPOSAL
Izzy GarufiAustraliaIoni Bowcher UNQUALIFIED
Jefferson SchemmerAustraliaStephen Shaw UNQUALIFIED
Darci PoquetteArgentinaAsiya Javayant RENEWAL
David DarakjyAustraliaBernardo Dominic NEGOTIATION
Kaitlin OstroskyAustraliaOnyama Limba PROPOSAL
Tony FollerFranceBernardo Dominic NEW
Izzy GarufiCanadaOnyama Limba QUALIFIED
Mayumi KolmetzUnited KingdomBernardo Dominic PROPOSAL
Kaitlin OstroskyUnited KingdomAsiya Javayant RENEWAL
Sinclair WaycottItalyIoni Bowcher RENEWAL
Silvio SlusarskiBrazilXuxue Feng UNQUALIFIED
Clifford RimCanadaBernardo Dominic QUALIFIED
Chavez BriddickRussiaIoni Bowcher PROPOSAL
Jefferson SchemmerBrazilElwin Sharvill NEGOTIATION
Smith GlickSpainAmy Elsner PROPOSAL
Aika InouyeRussiaXuxue Feng QUALIFIED
Morrow RutaAustraliaAmy Elsner NEW
Murillo MaletItalyAnna Fali RENEWAL
Emily WhobreyAustraliaStephen Shaw RENEWAL
Silvio SlusarskiItalyOnyama Limba NEGOTIATION
Juan WieserAustraliaIoni Bowcher NEGOTIATION
Jefferson SchemmerRussiaAsiya Javayant NEGOTIATION
Jefferson SchemmerAustraliaAnna Fali QUALIFIED
Jennifer AmigonRussiaAsiya Javayant QUALIFIED
Greenwood BologniaUnited KingdomIoni Bowcher QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Antonio CaudyBrazilXuxue Feng UNQUALIFIED
Greenwood BologniaBrazilAnna Fali NEW
Isabel BowleyJapanIvan Magalhaes QUALIFIED
Ivar PaprockiJapanOnyama Limba QUALIFIED
Julie StensethAustraliaAnna Fali UNQUALIFIED
Adams MorascaJapanElwin Sharvill NEW
Salvatore StockhamItalyStephen Shaw NEGOTIATION
Wickens NestleUnited KingdomOnyama Limba UNQUALIFIED
Deepesh ChuiRussiaStephen Shaw RENEWAL
Arvin AlbaresFranceBernardo Dominic NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony FollerUnited Kingdom2026-05-19Truhlar And Truhlar Attys NEGOTIATION17Xuxue Feng
1001Leon OldroydFrance2026-06-04Truhlar And Truhlar Attys QUALIFIED89Bernardo Dominic
1002Greenwood BologniaFrance2026-05-27Chemel, James L Cpa PROPOSAL94Ivan Magalhaes
1003Octavia MaletUnited Kingdom2026-05-12Chanay, Jeffrey A Esq PROPOSAL67Elwin Sharvill
1004Aruna FigeroaFrance2026-06-02Benton, John B Jr QUALIFIED57Onyama Limba
1005Smith GlickGermany2026-06-09Printing Dimensions NEGOTIATION34Xuxue Feng
1006Chavez BriddickItaly2026-06-04Morlong Associates QUALIFIED27Ivan Magalhaes
1007Ashley DoeItaly2026-05-15Dorl, James J Esq RENEWAL38Xuxue Feng
1008Leon OldroydArgentina2026-05-24Chapman, Ross E Esq RENEWAL81Bernardo Dominic
1009Jennifer AmigonRussia2026-05-12King, Christopher A Esq UNQUALIFIED16Xuxue Feng
1010David DarakjyItaly2026-06-06Morlong Associates QUALIFIED26Onyama Limba
1011Arvin AlbaresSpain2026-06-01Chemel, James L Cpa NEGOTIATION60Asiya Javayant
1012Johnson SergiIndia2026-05-18King, Christopher A Esq QUALIFIED17Bernardo Dominic
1013Jennifer AmigonItaly2026-05-18Dorl, James J Esq PROPOSAL80Elwin Sharvill
1014Jefferson SchemmerCanada2026-05-20Printing Dimensions RENEWAL53Anna Fali
1015Jefferson SchemmerCanada2026-05-30Dorl, James J Esq RENEWAL83Ioni Bowcher
1016Mayumi KolmetzIndia2026-05-28Printing Dimensions PROPOSAL22Elwin Sharvill
1017Kadeem FlosiIndia2026-05-15Printing Dimensions UNQUALIFIED42Ivan Magalhaes
1018Claire TollnerIndia2026-05-27Benton, John B Jr NEGOTIATION65Bernardo Dominic
1019Isabel BowleyFrance2026-05-30Truhlar And Truhlar Attys RENEWAL65Asiya Javayant
1020Kaitlin OstroskyRussia2026-05-29Chanay, Jeffrey A Esq NEW30Ioni Bowcher
1021Jennifer AmigonUnited Kingdom2026-06-02Rangoni Of Florence UNQUALIFIED3Elwin Sharvill
1022Nicolas IturbideFrance2026-05-18Feiner Bros PROPOSAL25Elwin Sharvill
1023David DarakjyFrance2026-06-01Chemel, James L Cpa QUALIFIED6Xuxue Feng
1024Morrow RutaArgentina2026-06-09Buckley Miller Wright NEGOTIATION94Elwin Sharvill
1025Juan WieserUnited Kingdom2026-05-12Feiner Bros NEW63Onyama Limba
1026Costa DilliardArgentina2026-06-04Morlong Associates UNQUALIFIED74Amy Elsner
1027Silvio SlusarskiArgentina2026-06-03Commercial Press RENEWAL45Stephen Shaw
1028Maisha RulapaughIndia2026-05-23Benton, John B Jr NEGOTIATION36Elwin Sharvill
1029Munro FerenczRussia2026-06-02Benton, John B Jr UNQUALIFIED50Amy Elsner
1030Nicolas IturbideFrance2026-05-20Benton, John B Jr RENEWAL56Amy Elsner
1031Izzy GarufiCanada2026-05-19Rousseaux, Michael Esq QUALIFIED34Anna Fali
1032Emily WhobreyJapan2026-05-30King, Christopher A Esq UNQUALIFIED47Asiya Javayant
1033Julie StensethCanada2026-05-29Benton, John B Jr NEGOTIATION5Bernardo Dominic
1034Stacey MacleadItaly2026-05-25Commercial Press PROPOSAL56Elwin Sharvill
1035Leon OldroydSpain2026-05-11Rangoni Of Florence UNQUALIFIED67Amy Elsner
1036Mujtaba NickaItaly2026-06-03Benton, John B Jr NEGOTIATION78Stephen Shaw
1037Jennifer AmigonBrazil2026-05-13Truhlar And Truhlar Attys QUALIFIED69Asiya Javayant
1038Ashley DoeJapan2026-05-17Buckley Miller Wright NEW1Ivan Magalhaes
1039Arvin AlbaresItaly2026-05-13Truhlar And Truhlar Attys PROPOSAL38Asiya Javayant
1040Leon OldroydIndia2026-06-09Morlong Associates QUALIFIED20Onyama Limba
1041Francesco ShinkoJapan2026-05-29Truhlar And Truhlar Attys UNQUALIFIED79Amy Elsner
1042Salvatore StockhamItaly2026-05-13Commercial Press NEW47Ioni Bowcher
1043Maisha RulapaughBrazil2026-05-11Feltz Printing Service NEW40Elwin Sharvill
1044Tony FollerAustralia2026-05-23Truhlar And Truhlar Attys NEW51Stephen Shaw
1045Emily WhobreyRussia2026-05-11Morlong Associates RENEWAL44Stephen Shaw
1046Sinclair WaycottItaly2026-05-17Dorl, James J Esq QUALIFIED84Asiya Javayant
1047Tony FollerRussia2026-05-22King, Christopher A Esq RENEWAL61Bernardo Dominic
1048Alejandro PerinSpain2026-05-27Chanay, Jeffrey A Esq QUALIFIED95Amy Elsner
1049James ButtCanada2026-05-28Truhlar And Truhlar Attys NEGOTIATION87Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Ricardo GauchoUnited KingdomStephen Shaw UNQUALIFIED
Julie StensethSpainIvan Magalhaes RENEWAL
Silvio SlusarskiSpainOnyama Limba PROPOSAL
Kaitlin OstroskyAustraliaIvan Magalhaes UNQUALIFIED
Misaki RoysterItalyAsiya Javayant PROPOSAL
Octavia MaletAustraliaOnyama Limba PROPOSAL
David DarakjySpainAmy Elsner UNQUALIFIED
Costa DilliardJapanStephen Shaw NEW
Antonio CaudyItalyAmy Elsner UNQUALIFIED
Nicolas IturbideFranceAsiya Javayant RENEWAL
Stacey MacleadSpainOnyama Limba RENEWAL
Jeanfrancois VenereSpainAnna Fali PROPOSAL
Wickens NestleArgentinaXuxue Feng QUALIFIED
Deepesh ChuiBrazilOnyama Limba UNQUALIFIED
Ricardo GauchoCanadaStephen Shaw QUALIFIED
Ivar PaprockiIndiaAsiya Javayant RENEWAL
Mayumi KolmetzCanadaAnna Fali NEW
Juan WieserUnited KingdomAnna Fali RENEWAL
Johnson SergiGermanyAnna Fali NEGOTIATION
Maria MarrierRussiaBernardo Dominic NEGOTIATION
Misaki RoysterUnited KingdomBernardo Dominic QUALIFIED
Ricardo GauchoSpainAnna Fali QUALIFIED
Ivar PaprockiJapanAnna Fali PROPOSAL
Jeanfrancois VenereRussiaOnyama Limba RENEWAL
Cody SaylorsCanadaAnna Fali UNQUALIFIED
Julie StensethSpainElwin Sharvill QUALIFIED
Aruna FigeroaArgentinaIoni Bowcher PROPOSAL
Costa DilliardBrazilBernardo Dominic NEW
Ivar PaprockiBrazilAmy Elsner QUALIFIED
Clifford RimAustraliaElwin Sharvill PROPOSAL
Octavia MaletUnited KingdomStephen Shaw RENEWAL
Johnson SergiGermanyAsiya Javayant PROPOSAL
Greenwood BologniaGermanyAsiya Javayant QUALIFIED
Maria MarrierItalyAnna Fali RENEWAL
James ButtFranceOnyama Limba PROPOSAL
Jones VocelkaUnited KingdomXuxue Feng UNQUALIFIED
Isabel BowleyGermanyAnna Fali PROPOSAL
Isabel BowleyAustraliaAnna Fali NEW
Leon OldroydItalyStephen Shaw RENEWAL
Nicolas IturbideCanadaAmy Elsner NEW
Arvin AlbaresArgentinaIoni Bowcher UNQUALIFIED
Murillo MaletRussiaIvan Magalhaes NEGOTIATION
Sinclair WaycottGermanyOnyama Limba QUALIFIED
Costa DilliardIndiaAnna Fali RENEWAL
Jennifer AmigonArgentinaBernardo Dominic PROPOSAL
Leja CaldareraCanadaBernardo Dominic UNQUALIFIED
Mayumi KolmetzArgentinaIvan Magalhaes QUALIFIED
Tony FollerIndiaIoni Bowcher RENEWAL
Smith GlickJapanElwin Sharvill PROPOSAL
Aruna FigeroaSpainAsiya Javayant RENEWAL
Frozen Columns
Name
Clifford Rim
Aditya Kusko
Stacey Maclead
Isabel Bowley
Nicolas Iturbide
Adams Morasca
Aruna Figeroa
Morrow Ruta
Kadeem Flosi
David Darakjy
Morrow Ruta
David Darakjy
Izzy Garufi
James Butt
Adams Morasca
Ashley Doe
Antonio Caudy
James Butt
Aditya Kusko
Alejandro Perin
Greenwood Bolognia
Deepesh Chui
Morrow Ruta
Smith Glick
Munro Ferencz
Mujtaba Nicka
Morrow Ruta
Misaki Royster
Sinclair Waycott
Jones Vocelka
Chavez Briddick
Izzy Garufi
Greenwood Bolognia
Cody Saylors
Arvin Albares
Cody Saylors
Maria Marrier
Jeanfrancois Venere
Chavez Briddick
Juan Wieser
Mujtaba Nicka
Leon Oldroyd
Stacey Maclead
Mujtaba Nicka
Ivar Paprocki
Nicolas Iturbide
Rodrigues Campain
Julie Stenseth
Kadeem Flosi
James Butt
IdCountryDate
1000Italy2026-06-08
1001Russia2026-05-27
1002India2026-05-17
1003Germany2026-05-26
1004Australia2026-05-29
1005Brazil2026-05-17
1006Brazil2026-05-21
1007France2026-06-02
1008Spain2026-06-04
1009Russia2026-05-15
1010Canada2026-05-24
1011Brazil2026-06-09
1012Germany2026-05-22
1013Japan2026-05-22
1014Russia2026-05-21
1015Spain2026-05-29
1016Canada2026-06-06
1017Japan2026-05-29
1018Russia2026-05-11
1019Italy2026-05-11
1020Argentina2026-06-02
1021Spain2026-05-22
1022Argentina2026-06-03
1023France2026-05-17
1024Italy2026-05-30
1025Germany2026-06-09
1026India2026-05-26
1027India2026-06-04
1028France2026-05-22
1029France2026-05-17
1030Australia2026-05-14
1031Argentina2026-06-09
1032Japan2026-05-20
1033United Kingdom2026-05-24
1034Australia2026-05-29
1035Japan2026-05-12
1036Italy2026-05-26
1037Russia2026-06-05
1038Spain2026-05-16
1039United Kingdom2026-06-06
1040France2026-05-22
1041France2026-05-13
1042Spain2026-05-13
1043Russia2026-05-19
1044United Kingdom2026-05-15
1045Brazil2026-05-20
1046Germany2026-05-30
1047Italy2026-06-03
1048Italy2026-05-16
1049Japan2026-06-02

On-Demand Data

NameIdCountryDate
Clifford Rim1000Argentina2026-05-31
Wickens Nestle1001Brazil2026-06-08
Chavez Briddick1002Spain2026-05-31
Faith Gillian1003Australia2026-05-23
Maria Marrier1004Japan2026-06-09
Ricardo Gaucho1005Japan2026-05-23
Izzy Garufi1006Russia2026-05-31
Jones Vocelka1007Italy2026-05-21
Darci Poquette1008Australia2026-06-05
Alejandro Perin1009Canada2026-05-20
Aditya Kusko1010United Kingdom2026-05-15
Jones Vocelka1011Spain2026-05-17
Jennifer Amigon1012Germany2026-05-24
David Darakjy1013United Kingdom2026-05-17
Izzy Garufi1014Canada2026-05-31
Johnson Sergi1015Spain2026-05-31
Stacey Maclead1016India2026-05-25
Cody Saylors1017Brazil2026-05-11
Faith Gillian1018United Kingdom2026-05-24
Kaitlin Ostrosky1019Brazil2026-05-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony FollerJapanStephen Shaw QUALIFIED
Rodrigues CampainUnited KingdomIoni Bowcher PROPOSAL
Sinclair WaycottIndiaIvan Magalhaes NEW
James ButtItalyStephen Shaw RENEWAL
Jones VocelkaItalyElwin Sharvill QUALIFIED
Faith GillianIndiaIoni Bowcher PROPOSAL
Antonio CaudyGermanyBernardo Dominic RENEWAL
Ashley DoeRussiaAmy Elsner RENEWAL
Ashley DoeItalyBernardo Dominic NEGOTIATION
Kadeem FlosiItalyAmy Elsner NEGOTIATION
Julie StensethGermanyAsiya Javayant PROPOSAL
Jennifer AmigonJapanIoni Bowcher PROPOSAL
Jefferson SchemmerUnited KingdomStephen Shaw RENEWAL
Maria MarrierGermanyElwin Sharvill NEGOTIATION
Aditya KuskoItalyAnna Fali PROPOSAL
Alejandro PerinIndiaAsiya Javayant NEW
Octavia MaletCanadaAsiya Javayant PROPOSAL
Jennifer AmigonGermanyBernardo Dominic PROPOSAL
Rodrigues CampainGermanyXuxue Feng NEW
Maisha RulapaughSpainXuxue Feng UNQUALIFIED
Jennifer AmigonBrazilStephen Shaw UNQUALIFIED
Jefferson SchemmerIndiaAmy Elsner QUALIFIED
Ricardo GauchoGermanyAnna Fali UNQUALIFIED
Maisha RulapaughIndiaAnna Fali NEGOTIATION
Juan WieserAustraliaAnna Fali PROPOSAL
Aditya KuskoGermanyAmy Elsner NEW
Adams MorascaJapanAmy Elsner PROPOSAL
Chavez BriddickBrazilIoni Bowcher QUALIFIED
Stacey MacleadGermanyAmy Elsner NEW
Emily WhobreyAustraliaAsiya Javayant PROPOSAL
Francesco ShinkoJapanBernardo Dominic UNQUALIFIED
Murillo MaletCanadaAmy Elsner NEGOTIATION
Rodrigues CampainSpainStephen Shaw PROPOSAL
Emily WhobreyFranceElwin Sharvill NEW
Alejandro PerinArgentinaStephen Shaw PROPOSAL
Silvio SlusarskiItalyBernardo Dominic UNQUALIFIED
Nicolas IturbideCanadaBernardo Dominic UNQUALIFIED
Juan WieserJapanElwin Sharvill RENEWAL
Izzy GarufiIndiaIoni Bowcher NEGOTIATION
Francesco ShinkoIndiaAsiya Javayant 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>