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
Maisha RulapaughAustraliaXuxue Feng NEW
Maria MarrierFranceAnna Fali RENEWAL
Leja CaldareraGermanyXuxue Feng UNQUALIFIED
Octavia MaletArgentinaIoni Bowcher RENEWAL
Nicolas IturbideRussiaElwin Sharvill RENEWAL
Aditya KuskoFranceElwin Sharvill QUALIFIED
Leja CaldareraJapanIoni Bowcher PROPOSAL
Aditya KuskoUnited KingdomBernardo Dominic QUALIFIED
Cody SaylorsIndiaIoni Bowcher NEGOTIATION
Mayumi KolmetzSpainOnyama Limba RENEWAL
Morrow RutaArgentinaIoni Bowcher PROPOSAL
Sinclair WaycottGermanyIoni Bowcher RENEWAL
Francesco ShinkoBrazilIvan Magalhaes RENEWAL
Francesco ShinkoArgentinaXuxue Feng NEGOTIATION
Mujtaba NickaSpainAsiya Javayant QUALIFIED
Wickens NestleIndiaIvan Magalhaes RENEWAL
Deepesh ChuiSpainXuxue Feng UNQUALIFIED
Izzy GarufiUnited KingdomAsiya Javayant UNQUALIFIED
Rodrigues CampainArgentinaOnyama Limba NEGOTIATION
Ashley DoeRussiaIvan Magalhaes NEGOTIATION
Clifford RimGermanyAnna Fali RENEWAL
Isabel BowleyBrazilAmy Elsner NEGOTIATION
Rodrigues CampainItalyAnna Fali RENEWAL
Deepesh ChuiAustraliaAnna Fali UNQUALIFIED
Kadeem FlosiFranceOnyama Limba NEW
Leon OldroydItalyAsiya Javayant QUALIFIED
Mayumi KolmetzRussiaOnyama Limba NEGOTIATION
Aditya KuskoJapanAnna Fali PROPOSAL
Leon OldroydRussiaAmy Elsner RENEWAL
Leja CaldareraIndiaAnna Fali NEGOTIATION
Julie StensethArgentinaAnna Fali PROPOSAL
Morrow RutaItalyElwin Sharvill QUALIFIED
Jennifer AmigonRussiaElwin Sharvill UNQUALIFIED
Maisha RulapaughAustraliaIvan Magalhaes UNQUALIFIED
Jones VocelkaIndiaAmy Elsner QUALIFIED
Aditya KuskoBrazilOnyama Limba PROPOSAL
Aika InouyeIndiaIoni Bowcher NEW
Clifford RimArgentinaElwin Sharvill NEW
Deepesh ChuiAustraliaOnyama Limba QUALIFIED
Nicolas IturbideUnited KingdomAmy Elsner QUALIFIED
Smith GlickAustraliaXuxue Feng UNQUALIFIED
James ButtGermanyOnyama Limba PROPOSAL
Salvatore StockhamArgentinaIvan Magalhaes NEW
Isabel BowleySpainBernardo Dominic RENEWAL
Morrow RutaUnited KingdomAsiya Javayant UNQUALIFIED
Chavez BriddickIndiaAsiya Javayant NEGOTIATION
Chavez BriddickJapanIvan Magalhaes NEGOTIATION
Johnson SergiBrazilBernardo Dominic RENEWAL
Jones VocelkaBrazilElwin Sharvill NEW
Costa DilliardIndiaOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Jones VocelkaGermanyAnna Fali PROPOSAL
Aditya KuskoGermanyBernardo Dominic QUALIFIED
Leon OldroydRussiaStephen Shaw UNQUALIFIED
Clifford RimFranceAmy Elsner NEGOTIATION
James ButtGermanyOnyama Limba PROPOSAL
Aika InouyeRussiaIoni Bowcher UNQUALIFIED
Jennifer AmigonGermanyElwin Sharvill NEGOTIATION
Ricardo GauchoUnited KingdomAmy Elsner UNQUALIFIED
Morrow RutaUnited KingdomAnna Fali UNQUALIFIED
Jeanfrancois VenereJapanOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Octavia MaletSpain2026-05-25Commercial Press QUALIFIED19Anna Fali
1001Jennifer AmigonRussia2026-05-23Buckley Miller Wright PROPOSAL87Bernardo Dominic
1002Sinclair WaycottItaly2026-05-29Benton, John B Jr PROPOSAL21Elwin Sharvill
1003Izzy GarufiCanada2026-05-20Chemel, James L Cpa UNQUALIFIED69Ioni Bowcher
1004Isabel BowleyIndia2026-05-27Morlong Associates PROPOSAL88Ivan Magalhaes
1005Morrow RutaBrazil2026-06-02Chemel, James L Cpa NEW46Amy Elsner
1006James ButtRussia2026-06-09Chapman, Ross E Esq RENEWAL21Anna Fali
1007Deepesh ChuiRussia2026-05-23Truhlar And Truhlar Attys NEGOTIATION77Onyama Limba
1008Faith GillianRussia2026-05-31Morlong Associates RENEWAL36Ivan Magalhaes
1009Mujtaba NickaGermany2026-06-04Feltz Printing Service QUALIFIED80Stephen Shaw
1010Izzy GarufiRussia2026-06-08Morlong Associates NEGOTIATION92Bernardo Dominic
1011Emily WhobreyJapan2026-05-27Rangoni Of Florence RENEWAL97Onyama Limba
1012Aditya KuskoUnited Kingdom2026-05-23Chemel, James L Cpa NEGOTIATION78Bernardo Dominic
1013Ricardo GauchoBrazil2026-06-10Buckley Miller Wright PROPOSAL22Onyama Limba
1014Alejandro PerinAustralia2026-05-28Morlong Associates UNQUALIFIED35Anna Fali
1015Octavia MaletUnited Kingdom2026-06-03Benton, John B Jr RENEWAL30Ivan Magalhaes
1016Misaki RoysterArgentina2026-05-18Dorl, James J Esq UNQUALIFIED53Elwin Sharvill
1017Sinclair WaycottUnited Kingdom2026-06-09Chanay, Jeffrey A Esq UNQUALIFIED69Ivan Magalhaes
1018Deepesh ChuiBrazil2026-06-03Rangoni Of Florence PROPOSAL91Ivan Magalhaes
1019Arvin AlbaresRussia2026-06-09Morlong Associates NEW51Ioni Bowcher
1020Nicolas IturbideArgentina2026-05-27Commercial Press NEW64Elwin Sharvill
1021Antonio CaudyJapan2026-06-08Feiner Bros PROPOSAL33Xuxue Feng
1022Aditya KuskoGermany2026-06-06Feiner Bros NEW17Bernardo Dominic
1023Adams MorascaGermany2026-05-31Printing Dimensions QUALIFIED0Xuxue Feng
1024Silvio SlusarskiJapan2026-05-31Feiner Bros UNQUALIFIED96Ivan Magalhaes
1025Johnson SergiGermany2026-05-21Rangoni Of Florence UNQUALIFIED34Xuxue Feng
1026Darci PoquetteAustralia2026-05-22Feiner Bros QUALIFIED37Asiya Javayant
1027Aika InouyeAustralia2026-06-05Feiner Bros QUALIFIED36Elwin Sharvill
1028Johnson SergiUnited Kingdom2026-06-07Morlong Associates NEGOTIATION30Ioni Bowcher
1029Greenwood BologniaUnited Kingdom2026-05-18Printing Dimensions RENEWAL66Stephen Shaw
1030Mayumi KolmetzSpain2026-05-19Buckley Miller Wright UNQUALIFIED63Stephen Shaw
1031Arvin AlbaresItaly2026-06-10Feiner Bros NEGOTIATION50Stephen Shaw
1032Wickens NestleRussia2026-05-27Chemel, James L Cpa RENEWAL93Onyama Limba
1033Ashley DoeBrazil2026-05-20Feiner Bros UNQUALIFIED26Ioni Bowcher
1034Stacey MacleadBrazil2026-05-20Rousseaux, Michael Esq UNQUALIFIED48Ivan Magalhaes
1035Antonio CaudyArgentina2026-06-05Rousseaux, Michael Esq PROPOSAL56Anna Fali
1036Mayumi KolmetzAustralia2026-06-09Chapman, Ross E Esq QUALIFIED38Bernardo Dominic
1037Ivar PaprockiJapan2026-06-08Chemel, James L Cpa NEW1Bernardo Dominic
1038Deepesh ChuiAustralia2026-06-10Feiner Bros NEGOTIATION10Asiya Javayant
1039Johnson SergiArgentina2026-06-06Chapman, Ross E Esq QUALIFIED40Elwin Sharvill
1040Jones VocelkaSpain2026-05-16Morlong Associates NEGOTIATION68Xuxue Feng
1041Isabel BowleyJapan2026-06-11Feiner Bros QUALIFIED51Ivan Magalhaes
1042Ricardo GauchoAustralia2026-05-15King, Christopher A Esq NEGOTIATION62Elwin Sharvill
1043Greenwood BologniaItaly2026-06-03Printing Dimensions PROPOSAL10Onyama Limba
1044Stacey MacleadFrance2026-05-29Chanay, Jeffrey A Esq NEGOTIATION86Elwin Sharvill
1045Jefferson SchemmerCanada2026-05-16Printing Dimensions NEGOTIATION83Xuxue Feng
1046Darci PoquetteAustralia2026-05-22Buckley Miller Wright NEGOTIATION34Elwin Sharvill
1047Emily WhobreyJapan2026-05-28Printing Dimensions RENEWAL44Onyama Limba
1048Mujtaba NickaAustralia2026-05-18Benton, John B Jr QUALIFIED74Ivan Magalhaes
1049Alejandro PerinFrance2026-06-02Chapman, Ross E Esq UNQUALIFIED87Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Wickens NestleJapanXuxue Feng UNQUALIFIED
Jefferson SchemmerArgentinaAsiya Javayant NEGOTIATION
Wickens NestleFranceBernardo Dominic NEGOTIATION
Salvatore StockhamBrazilElwin Sharvill RENEWAL
Chavez BriddickBrazilIvan Magalhaes UNQUALIFIED
Adams MorascaCanadaIoni Bowcher QUALIFIED
Kaitlin OstroskyJapanIoni Bowcher PROPOSAL
Salvatore StockhamCanadaStephen Shaw NEGOTIATION
Salvatore StockhamArgentinaOnyama Limba QUALIFIED
Ivar PaprockiJapanAmy Elsner UNQUALIFIED
Cody SaylorsItalyBernardo Dominic RENEWAL
Ricardo GauchoIndiaIoni Bowcher PROPOSAL
Ashley DoeJapanElwin Sharvill UNQUALIFIED
Cody SaylorsCanadaBernardo Dominic QUALIFIED
Francesco ShinkoIndiaOnyama Limba RENEWAL
Ivar PaprockiAustraliaXuxue Feng UNQUALIFIED
Mujtaba NickaArgentinaAmy Elsner PROPOSAL
Misaki RoysterIndiaStephen Shaw UNQUALIFIED
Chavez BriddickItalyAnna Fali RENEWAL
Maisha RulapaughItalyOnyama Limba UNQUALIFIED
Leja CaldareraFranceElwin Sharvill NEGOTIATION
Murillo MaletUnited KingdomAsiya Javayant UNQUALIFIED
Greenwood BologniaAustraliaElwin Sharvill PROPOSAL
Antonio CaudyAustraliaOnyama Limba NEGOTIATION
Clifford RimSpainAmy Elsner PROPOSAL
Clifford RimGermanyBernardo Dominic NEW
Aditya KuskoSpainElwin Sharvill QUALIFIED
Darci PoquetteSpainStephen Shaw QUALIFIED
Johnson SergiBrazilAmy Elsner UNQUALIFIED
Jeanfrancois VenereCanadaAmy Elsner NEGOTIATION
Julie StensethCanadaIvan Magalhaes NEGOTIATION
Smith GlickUnited KingdomXuxue Feng PROPOSAL
Mujtaba NickaUnited KingdomBernardo Dominic RENEWAL
Jones VocelkaUnited KingdomAnna Fali NEGOTIATION
Kaitlin OstroskyIndiaOnyama Limba UNQUALIFIED
Jennifer AmigonSpainXuxue Feng NEGOTIATION
David DarakjyFranceOnyama Limba NEGOTIATION
James ButtItalyOnyama Limba PROPOSAL
Munro FerenczAustraliaAsiya Javayant PROPOSAL
Clifford RimAustraliaIoni Bowcher NEW
Salvatore StockhamAustraliaStephen Shaw NEW
Faith GillianFranceOnyama Limba RENEWAL
James ButtIndiaAnna Fali NEW
Leja CaldareraRussiaBernardo Dominic UNQUALIFIED
Maisha RulapaughGermanyStephen Shaw UNQUALIFIED
Antonio CaudyFranceIoni Bowcher QUALIFIED
Francesco ShinkoArgentinaElwin Sharvill NEGOTIATION
Jones VocelkaCanadaAnna Fali NEGOTIATION
Sinclair WaycottRussiaStephen Shaw PROPOSAL
Smith GlickArgentinaAsiya Javayant NEW
Frozen Columns
Name
Greenwood Bolognia
Isabel Bowley
Izzy Garufi
Greenwood Bolognia
Aditya Kusko
Jennifer Amigon
Emily Whobrey
Salvatore Stockham
Jones Vocelka
Ricardo Gaucho
Deepesh Chui
Stacey Maclead
Clifford Rim
Alejandro Perin
Adams Morasca
Izzy Garufi
Leja Caldarera
Mayumi Kolmetz
Kaitlin Ostrosky
Costa Dilliard
Ashley Doe
Greenwood Bolognia
Costa Dilliard
Maisha Rulapaugh
Faith Gillian
Murillo Malet
Clifford Rim
Kaitlin Ostrosky
Misaki Royster
Alejandro Perin
James Butt
Aruna Figeroa
Murillo Malet
Julie Stenseth
Clifford Rim
Ricardo Gaucho
Juan Wieser
Ricardo Gaucho
Ivar Paprocki
James Butt
Izzy Garufi
Kaitlin Ostrosky
Mayumi Kolmetz
Wickens Nestle
Maria Marrier
Arvin Albares
Morrow Ruta
Arvin Albares
Emily Whobrey
Aika Inouye
IdCountryDate
1000United Kingdom2026-06-08
1001United Kingdom2026-05-19
1002Argentina2026-05-31
1003Spain2026-05-16
1004Russia2026-05-23
1005Argentina2026-05-23
1006Russia2026-05-20
1007Spain2026-05-28
1008Germany2026-05-13
1009Canada2026-06-04
1010Spain2026-05-26
1011Canada2026-05-17
1012Australia2026-06-02
1013Australia2026-05-23
1014Argentina2026-05-16
1015India2026-06-03
1016United Kingdom2026-05-21
1017Spain2026-05-24
1018Japan2026-06-11
1019United Kingdom2026-05-28
1020Russia2026-05-22
1021Argentina2026-05-19
1022India2026-06-10
1023Germany2026-05-15
1024Australia2026-05-21
1025Brazil2026-05-18
1026Canada2026-05-24
1027Argentina2026-05-19
1028Argentina2026-06-07
1029Brazil2026-06-07
1030Spain2026-05-25
1031Australia2026-06-08
1032Japan2026-05-25
1033Canada2026-05-19
1034Argentina2026-06-07
1035Russia2026-05-24
1036Japan2026-06-03
1037Australia2026-05-23
1038Italy2026-05-31
1039Japan2026-05-19
1040Japan2026-06-07
1041Germany2026-06-08
1042Argentina2026-05-17
1043Japan2026-06-03
1044France2026-06-05
1045France2026-06-09
1046Italy2026-05-21
1047United Kingdom2026-05-26
1048Russia2026-06-01
1049India2026-05-19

On-Demand Data

NameIdCountryDate
Julie Stenseth1000Italy2026-06-08
Cody Saylors1001Brazil2026-05-19
David Darakjy1002Canada2026-06-06
James Butt1003India2026-06-07
Izzy Garufi1004Germany2026-05-17
Juan Wieser1005India2026-06-08
Aika Inouye1006Australia2026-05-30
Munro Ferencz1007Argentina2026-05-13
Smith Glick1008Russia2026-05-28
Antonio Caudy1009Spain2026-05-30
Salvatore Stockham1010France2026-05-23
Francesco Shinko1011Canada2026-06-07
Izzy Garufi1012Brazil2026-06-05
Juan Wieser1013France2026-06-08
Morrow Ruta1014Brazil2026-05-27
Johnson Sergi1015India2026-05-26
Greenwood Bolognia1016United Kingdom2026-06-02
Misaki Royster1017Australia2026-05-29
Juan Wieser1018Italy2026-06-02
James Butt1019Spain2026-05-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire TollnerRussiaStephen Shaw NEW
Mayumi KolmetzCanadaIvan Magalhaes NEW
Maisha RulapaughBrazilElwin Sharvill NEGOTIATION
Tony FollerIndiaStephen Shaw RENEWAL
Jones VocelkaCanadaIoni Bowcher NEGOTIATION
Morrow RutaIndiaBernardo Dominic QUALIFIED
Arvin AlbaresBrazilIvan Magalhaes UNQUALIFIED
Claire TollnerArgentinaStephen Shaw QUALIFIED
Sinclair WaycottBrazilBernardo Dominic NEW
Aditya KuskoGermanyBernardo Dominic NEW
Mayumi KolmetzSpainXuxue Feng RENEWAL
Jefferson SchemmerCanadaOnyama Limba NEGOTIATION
Jeanfrancois VenereArgentinaElwin Sharvill PROPOSAL
Chavez BriddickUnited KingdomIoni Bowcher RENEWAL
Clifford RimCanadaBernardo Dominic RENEWAL
Leon OldroydIndiaAsiya Javayant NEW
Antonio CaudyArgentinaXuxue Feng RENEWAL
Kaitlin OstroskyArgentinaIoni Bowcher NEW
Aika InouyeBrazilElwin Sharvill QUALIFIED
Greenwood BologniaAustraliaElwin Sharvill NEGOTIATION
Aika InouyeArgentinaIvan Magalhaes RENEWAL
Stacey MacleadGermanyAmy Elsner NEW
Isabel BowleySpainOnyama Limba NEGOTIATION
Johnson SergiSpainElwin Sharvill RENEWAL
Murillo MaletSpainOnyama Limba NEGOTIATION
Salvatore StockhamJapanStephen Shaw QUALIFIED
Chavez BriddickIndiaAmy Elsner QUALIFIED
Ricardo GauchoUnited KingdomAmy Elsner NEGOTIATION
Ashley DoeGermanyAnna Fali NEW
Juan WieserGermanyStephen Shaw PROPOSAL
Jennifer AmigonFranceBernardo Dominic PROPOSAL
Adams MorascaJapanAnna Fali PROPOSAL
Leon OldroydFranceIvan Magalhaes RENEWAL
Sinclair WaycottBrazilIvan Magalhaes QUALIFIED
Juan WieserJapanXuxue Feng NEGOTIATION
Maisha RulapaughItalyElwin Sharvill QUALIFIED
Misaki RoysterAustraliaElwin Sharvill NEW
Alejandro PerinAustraliaAmy Elsner PROPOSAL
Kaitlin OstroskyIndiaAsiya Javayant UNQUALIFIED
Nicolas IturbideGermanyIoni 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>