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
Faith GillianJapanAsiya Javayant NEGOTIATION
Munro FerenczItalyBernardo Dominic RENEWAL
Morrow RutaSpainStephen Shaw UNQUALIFIED
Stacey MacleadRussiaAsiya Javayant QUALIFIED
Salvatore StockhamGermanyIoni Bowcher NEW
Jennifer AmigonGermanyAsiya Javayant UNQUALIFIED
Jefferson SchemmerItalyAnna Fali RENEWAL
Maisha RulapaughUnited KingdomIoni Bowcher PROPOSAL
Arvin AlbaresAustraliaIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereArgentinaAsiya Javayant RENEWAL
Johnson SergiSpainIoni Bowcher NEGOTIATION
Cody SaylorsArgentinaAmy Elsner UNQUALIFIED
Costa DilliardItalyAnna Fali UNQUALIFIED
Morrow RutaBrazilStephen Shaw QUALIFIED
Clifford RimUnited KingdomXuxue Feng QUALIFIED
Kaitlin OstroskyFranceStephen Shaw UNQUALIFIED
Maisha RulapaughJapanIoni Bowcher RENEWAL
Adams MorascaSpainStephen Shaw RENEWAL
Jennifer AmigonFranceAnna Fali QUALIFIED
Mayumi KolmetzCanadaAsiya Javayant PROPOSAL
Deepesh ChuiAustraliaBernardo Dominic UNQUALIFIED
Ivar PaprockiAustraliaIoni Bowcher PROPOSAL
Chavez BriddickArgentinaIoni Bowcher PROPOSAL
Murillo MaletRussiaAnna Fali RENEWAL
Chavez BriddickUnited KingdomIvan Magalhaes NEW
Francesco ShinkoArgentinaBernardo Dominic UNQUALIFIED
Julie StensethItalyElwin Sharvill NEW
Greenwood BologniaItalyIoni Bowcher UNQUALIFIED
Jefferson SchemmerBrazilStephen Shaw RENEWAL
Costa DilliardAustraliaBernardo Dominic NEW
Mayumi KolmetzBrazilIvan Magalhaes NEW
Mujtaba NickaJapanAsiya Javayant RENEWAL
Salvatore StockhamSpainStephen Shaw UNQUALIFIED
Salvatore StockhamBrazilBernardo Dominic NEGOTIATION
Nicolas IturbideItalyAsiya Javayant NEGOTIATION
Mayumi KolmetzUnited KingdomOnyama Limba UNQUALIFIED
Johnson SergiIndiaAsiya Javayant PROPOSAL
Ashley DoeUnited KingdomAmy Elsner PROPOSAL
Sinclair WaycottItalyXuxue Feng QUALIFIED
Juan WieserBrazilIvan Magalhaes RENEWAL
Darci PoquetteJapanAnna Fali NEGOTIATION
Stacey MacleadCanadaIoni Bowcher NEW
Silvio SlusarskiRussiaAsiya Javayant PROPOSAL
David DarakjyJapanElwin Sharvill UNQUALIFIED
Maria MarrierJapanAsiya Javayant QUALIFIED
Aditya KuskoItalyAmy Elsner NEGOTIATION
Maisha RulapaughGermanyBernardo Dominic RENEWAL
Misaki RoysterRussiaElwin Sharvill QUALIFIED
Antonio CaudyIndiaAmy Elsner PROPOSAL
Ashley DoeJapanIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Claire TollnerAustraliaAsiya Javayant PROPOSAL
Leon OldroydCanadaAmy Elsner NEW
Isabel BowleyRussiaBernardo Dominic UNQUALIFIED
Alejandro PerinIndiaStephen Shaw QUALIFIED
Greenwood BologniaGermanyAnna Fali UNQUALIFIED
Alejandro PerinSpainOnyama Limba PROPOSAL
Leja CaldareraJapanXuxue Feng PROPOSAL
Murillo MaletItalyElwin Sharvill UNQUALIFIED
Leon OldroydArgentinaStephen Shaw NEGOTIATION
Octavia MaletCanadaAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody SaylorsIndia2026-05-06Rousseaux, Michael Esq PROPOSAL48Stephen Shaw
1001Smith GlickAustralia2026-05-03Chemel, James L Cpa QUALIFIED80Asiya Javayant
1002Faith GillianUnited Kingdom2026-04-20Commercial Press PROPOSAL34Stephen Shaw
1003Juan WieserIndia2026-05-03Rousseaux, Michael Esq PROPOSAL99Onyama Limba
1004Octavia MaletJapan2026-04-21Chemel, James L Cpa QUALIFIED57Amy Elsner
1005Juan WieserBrazil2026-04-28Rousseaux, Michael Esq PROPOSAL11Onyama Limba
1006Octavia MaletRussia2026-04-22Feiner Bros UNQUALIFIED86Xuxue Feng
1007Juan WieserCanada2026-04-23Dorl, James J Esq NEGOTIATION82Elwin Sharvill
1008Tony FollerBrazil2026-05-02Rousseaux, Michael Esq QUALIFIED60Anna Fali
1009Darci PoquetteSpain2026-05-10Rousseaux, Michael Esq PROPOSAL21Elwin Sharvill
1010Rodrigues CampainAustralia2026-04-28Chemel, James L Cpa NEGOTIATION28Amy Elsner
1011Francesco ShinkoArgentina2026-05-01Morlong Associates RENEWAL12Onyama Limba
1012Juan WieserItaly2026-05-06Commercial Press RENEWAL91Xuxue Feng
1013Greenwood BologniaJapan2026-04-24Dorl, James J Esq PROPOSAL26Bernardo Dominic
1014Deepesh ChuiGermany2026-05-01Feiner Bros UNQUALIFIED91Ioni Bowcher
1015Emily WhobreyCanada2026-04-19Chemel, James L Cpa NEW22Elwin Sharvill
1016Sinclair WaycottRussia2026-04-17Benton, John B Jr NEW7Elwin Sharvill
1017Isabel BowleySpain2026-04-28Printing Dimensions QUALIFIED39Asiya Javayant
1018Clifford RimCanada2026-04-17Morlong Associates NEW17Stephen Shaw
1019Misaki RoysterUnited Kingdom2026-05-03Chanay, Jeffrey A Esq RENEWAL66Asiya Javayant
1020Nicolas IturbideRussia2026-04-19Morlong Associates PROPOSAL17Xuxue Feng
1021David DarakjyFrance2026-05-05Rangoni Of Florence RENEWAL49Elwin Sharvill
1022Faith GillianGermany2026-05-07Chemel, James L Cpa NEW86Onyama Limba
1023Aika InouyeSpain2026-05-11Chapman, Ross E Esq QUALIFIED88Anna Fali
1024Mayumi KolmetzRussia2026-05-12Rangoni Of Florence QUALIFIED2Asiya Javayant
1025Mayumi KolmetzUnited Kingdom2026-05-02Chapman, Ross E Esq RENEWAL88Onyama Limba
1026Mayumi KolmetzAustralia2026-04-22Chapman, Ross E Esq PROPOSAL35Ivan Magalhaes
1027Antonio CaudyCanada2026-04-23Chanay, Jeffrey A Esq NEGOTIATION52Amy Elsner
1028James ButtBrazil2026-05-02Rangoni Of Florence PROPOSAL92Asiya Javayant
1029Julie StensethRussia2026-05-05King, Christopher A Esq PROPOSAL39Xuxue Feng
1030Aditya KuskoGermany2026-04-16Dorl, James J Esq UNQUALIFIED1Xuxue Feng
1031Claire TollnerGermany2026-04-17Chanay, Jeffrey A Esq NEGOTIATION97Bernardo Dominic
1032Juan WieserItaly2026-05-02Rangoni Of Florence QUALIFIED24Onyama Limba
1033Jefferson SchemmerFrance2026-04-30Chapman, Ross E Esq NEW95Ioni Bowcher
1034Mujtaba NickaArgentina2026-05-06Benton, John B Jr NEW85Anna Fali
1035Aditya KuskoBrazil2026-04-19Commercial Press QUALIFIED71Ioni Bowcher
1036Adams MorascaGermany2026-05-09Rousseaux, Michael Esq UNQUALIFIED56Elwin Sharvill
1037Salvatore StockhamUnited Kingdom2026-04-29Truhlar And Truhlar Attys NEW85Asiya Javayant
1038Chavez BriddickFrance2026-05-04Benton, John B Jr UNQUALIFIED1Ivan Magalhaes
1039Salvatore StockhamJapan2026-04-30Rousseaux, Michael Esq QUALIFIED92Ivan Magalhaes
1040James ButtItaly2026-04-17Feiner Bros RENEWAL86Stephen Shaw
1041Mujtaba NickaBrazil2026-04-15Commercial Press NEW34Xuxue Feng
1042Smith GlickArgentina2026-05-11Feltz Printing Service QUALIFIED13Anna Fali
1043Johnson SergiCanada2026-05-02Feiner Bros UNQUALIFIED85Onyama Limba
1044Smith GlickIndia2026-04-29King, Christopher A Esq NEGOTIATION86Onyama Limba
1045Claire TollnerUnited Kingdom2026-05-06Printing Dimensions UNQUALIFIED54Anna Fali
1046Mujtaba NickaCanada2026-04-17Rangoni Of Florence RENEWAL82Asiya Javayant
1047Wickens NestleGermany2026-04-16Printing Dimensions PROPOSAL40Amy Elsner
1048Wickens NestleAustralia2026-04-15Commercial Press UNQUALIFIED97Onyama Limba
1049Kaitlin OstroskyFrance2026-04-20Printing Dimensions NEW1Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Isabel BowleyUnited KingdomIvan Magalhaes PROPOSAL
Johnson SergiArgentinaAsiya Javayant RENEWAL
Ricardo GauchoBrazilOnyama Limba UNQUALIFIED
Julie StensethArgentinaIoni Bowcher PROPOSAL
Faith GillianFranceStephen Shaw NEGOTIATION
Julie StensethBrazilBernardo Dominic PROPOSAL
James ButtUnited KingdomBernardo Dominic NEGOTIATION
Izzy GarufiGermanyAnna Fali UNQUALIFIED
Costa DilliardSpainIoni Bowcher NEGOTIATION
James ButtFranceAsiya Javayant RENEWAL
Stacey MacleadSpainIoni Bowcher QUALIFIED
Aruna FigeroaItalyBernardo Dominic UNQUALIFIED
Antonio CaudyCanadaIvan Magalhaes PROPOSAL
Aditya KuskoSpainIvan Magalhaes NEW
Jeanfrancois VenereAustraliaIvan Magalhaes RENEWAL
Alejandro PerinAustraliaBernardo Dominic RENEWAL
Cody SaylorsAustraliaAmy Elsner QUALIFIED
Mujtaba NickaAustraliaIvan Magalhaes QUALIFIED
Arvin AlbaresIndiaElwin Sharvill QUALIFIED
Aika InouyeRussiaAmy Elsner NEGOTIATION
Aruna FigeroaUnited KingdomAsiya Javayant QUALIFIED
Rodrigues CampainAustraliaAmy Elsner RENEWAL
Smith GlickSpainElwin Sharvill UNQUALIFIED
Mujtaba NickaSpainOnyama Limba QUALIFIED
Ivar PaprockiItalyAmy Elsner QUALIFIED
Stacey MacleadBrazilOnyama Limba UNQUALIFIED
Johnson SergiRussiaIvan Magalhaes PROPOSAL
Leja CaldareraAustraliaBernardo Dominic NEGOTIATION
Maria MarrierCanadaStephen Shaw PROPOSAL
Ricardo GauchoJapanIoni Bowcher QUALIFIED
Mayumi KolmetzRussiaAsiya Javayant QUALIFIED
Wickens NestleGermanyBernardo Dominic RENEWAL
Salvatore StockhamIndiaIoni Bowcher NEW
Alejandro PerinGermanyXuxue Feng QUALIFIED
Darci PoquetteFranceAnna Fali UNQUALIFIED
Claire TollnerIndiaAmy Elsner QUALIFIED
Alejandro PerinArgentinaXuxue Feng NEGOTIATION
Mayumi KolmetzBrazilIoni Bowcher UNQUALIFIED
Wickens NestleCanadaIvan Magalhaes NEGOTIATION
Kadeem FlosiJapanAnna Fali QUALIFIED
Munro FerenczArgentinaOnyama Limba PROPOSAL
Leja CaldareraUnited KingdomBernardo Dominic QUALIFIED
Maisha RulapaughRussiaBernardo Dominic PROPOSAL
Stacey MacleadItalyAnna Fali NEW
Kaitlin OstroskyArgentinaBernardo Dominic NEW
Adams MorascaSpainBernardo Dominic UNQUALIFIED
Francesco ShinkoBrazilBernardo Dominic PROPOSAL
Stacey MacleadCanadaStephen Shaw NEW
Darci PoquetteCanadaAsiya Javayant RENEWAL
Kaitlin OstroskyUnited KingdomAsiya Javayant PROPOSAL
Frozen Columns
Name
Maria Marrier
Jeanfrancois Venere
Stacey Maclead
Octavia Malet
Jones Vocelka
Greenwood Bolognia
James Butt
Ashley Doe
Aika Inouye
Deepesh Chui
Izzy Garufi
Munro Ferencz
Aruna Figeroa
Jefferson Schemmer
Munro Ferencz
Smith Glick
Leja Caldarera
Arvin Albares
Deepesh Chui
Leon Oldroyd
Murillo Malet
Aruna Figeroa
Kadeem Flosi
Antonio Caudy
Wickens Nestle
Morrow Ruta
Izzy Garufi
Cody Saylors
Kaitlin Ostrosky
Kadeem Flosi
Rodrigues Campain
Mujtaba Nicka
Munro Ferencz
Francesco Shinko
Mujtaba Nicka
Jones Vocelka
Aditya Kusko
Misaki Royster
Arvin Albares
Juan Wieser
Sinclair Waycott
Ricardo Gaucho
Octavia Malet
Deepesh Chui
Stacey Maclead
Emily Whobrey
Tony Foller
Ivar Paprocki
Alejandro Perin
Smith Glick
IdCountryDate
1000Australia2026-04-23
1001France2026-04-18
1002Russia2026-05-07
1003Japan2026-04-18
1004United Kingdom2026-05-09
1005Australia2026-05-03
1006Brazil2026-05-05
1007France2026-04-26
1008Australia2026-04-29
1009Germany2026-05-08
1010India2026-04-22
1011Spain2026-04-16
1012France2026-05-08
1013Russia2026-04-15
1014Canada2026-04-24
1015Argentina2026-05-09
1016Italy2026-05-09
1017Japan2026-04-16
1018Brazil2026-05-04
1019Germany2026-04-19
1020United Kingdom2026-04-30
1021Australia2026-04-21
1022Canada2026-04-24
1023Canada2026-04-16
1024Germany2026-04-19
1025Brazil2026-04-20
1026Canada2026-04-18
1027Japan2026-05-02
1028France2026-05-07
1029Spain2026-04-20
1030Italy2026-04-15
1031Russia2026-04-21
1032Spain2026-05-02
1033United Kingdom2026-04-16
1034Argentina2026-05-09
1035Italy2026-04-27
1036India2026-04-14
1037Italy2026-05-04
1038Germany2026-05-05
1039Australia2026-05-13
1040Spain2026-04-27
1041Canada2026-04-16
1042Argentina2026-04-23
1043Brazil2026-04-22
1044France2026-05-13
1045Russia2026-04-22
1046India2026-05-03
1047Germany2026-05-05
1048Australia2026-04-24
1049Australia2026-04-17

On-Demand Data

NameIdCountryDate
Morrow Ruta1000Brazil2026-04-15
Leja Caldarera1001Australia2026-04-18
James Butt1002United Kingdom2026-04-25
Johnson Sergi1003Russia2026-04-17
Clifford Rim1004Russia2026-05-07
Darci Poquette1005Canada2026-05-11
James Butt1006Germany2026-04-27
Aika Inouye1007Germany2026-04-22
Antonio Caudy1008United Kingdom2026-04-28
Izzy Garufi1009Japan2026-05-06
Clifford Rim1010Canada2026-05-13
Jefferson Schemmer1011Italy2026-04-15
Silvio Slusarski1012United Kingdom2026-04-30
Misaki Royster1013Australia2026-04-16
Mujtaba Nicka1014Russia2026-04-14
Tony Foller1015United Kingdom2026-04-18
Alejandro Perin1016Canada2026-04-28
Tony Foller1017France2026-05-10
Cody Saylors1018United Kingdom2026-04-26
Nicolas Iturbide1019United Kingdom2026-04-29
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith GillianRussiaStephen Shaw QUALIFIED
Izzy GarufiAustraliaXuxue Feng UNQUALIFIED
Darci PoquetteBrazilOnyama Limba QUALIFIED
James ButtAustraliaElwin Sharvill NEW
Deepesh ChuiBrazilAsiya Javayant RENEWAL
Stacey MacleadCanadaElwin Sharvill PROPOSAL
Aditya KuskoFranceIvan Magalhaes PROPOSAL
Isabel BowleySpainStephen Shaw NEGOTIATION
Emily WhobreyBrazilAmy Elsner RENEWAL
Izzy GarufiSpainElwin Sharvill QUALIFIED
Smith GlickArgentinaIvan Magalhaes NEW
Silvio SlusarskiCanadaElwin Sharvill QUALIFIED
Rodrigues CampainSpainElwin Sharvill NEGOTIATION
David DarakjyRussiaStephen Shaw UNQUALIFIED
Maisha RulapaughSpainXuxue Feng NEW
Salvatore StockhamRussiaOnyama Limba PROPOSAL
Mujtaba NickaArgentinaAsiya Javayant QUALIFIED
Francesco ShinkoRussiaXuxue Feng PROPOSAL
Cody SaylorsRussiaIoni Bowcher QUALIFIED
Antonio CaudyAustraliaElwin Sharvill PROPOSAL
Greenwood BologniaItalyStephen Shaw QUALIFIED
Mayumi KolmetzBrazilStephen Shaw NEGOTIATION
Costa DilliardJapanAmy Elsner PROPOSAL
Aika InouyeItalyAsiya Javayant NEGOTIATION
Greenwood BologniaArgentinaAnna Fali NEGOTIATION
Stacey MacleadAustraliaIvan Magalhaes UNQUALIFIED
Chavez BriddickBrazilOnyama Limba NEGOTIATION
Maria MarrierIndiaIoni Bowcher UNQUALIFIED
Rodrigues CampainArgentinaBernardo Dominic RENEWAL
Francesco ShinkoItalyBernardo Dominic PROPOSAL
Ricardo GauchoRussiaAmy Elsner NEGOTIATION
Aditya KuskoCanadaOnyama Limba RENEWAL
Adams MorascaCanadaAnna Fali NEW
Smith GlickIndiaIvan Magalhaes NEGOTIATION
Octavia MaletSpainStephen Shaw PROPOSAL
Antonio CaudyIndiaXuxue Feng QUALIFIED
Izzy GarufiBrazilStephen Shaw UNQUALIFIED
Chavez BriddickGermanyOnyama Limba NEW
Ricardo GauchoRussiaStephen Shaw NEGOTIATION
Kadeem FlosiArgentinaElwin Sharvill 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>