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
Chavez BriddickRussiaXuxue Feng NEGOTIATION
Mujtaba NickaJapanStephen Shaw NEGOTIATION
Silvio SlusarskiCanadaBernardo Dominic QUALIFIED
Arvin AlbaresAustraliaBernardo Dominic NEW
Leon OldroydJapanIoni Bowcher PROPOSAL
Murillo MaletGermanyIoni Bowcher QUALIFIED
Nicolas IturbideArgentinaXuxue Feng NEW
Arvin AlbaresJapanIoni Bowcher NEGOTIATION
Clifford RimJapanBernardo Dominic NEGOTIATION
Jefferson SchemmerItalyIvan Magalhaes RENEWAL
Ivar PaprockiJapanIoni Bowcher PROPOSAL
Munro FerenczGermanyAsiya Javayant QUALIFIED
Adams MorascaUnited KingdomIvan Magalhaes NEW
Aruna FigeroaSpainElwin Sharvill QUALIFIED
Ricardo GauchoArgentinaXuxue Feng QUALIFIED
Faith GillianItalyAnna Fali UNQUALIFIED
Aditya KuskoCanadaElwin Sharvill NEGOTIATION
Arvin AlbaresSpainIoni Bowcher NEW
Alejandro PerinIndiaIoni Bowcher RENEWAL
Aika InouyeItalyIoni Bowcher NEGOTIATION
Smith GlickSpainAnna Fali QUALIFIED
Sinclair WaycottAustraliaIoni Bowcher RENEWAL
Mayumi KolmetzUnited KingdomOnyama Limba UNQUALIFIED
Jones VocelkaArgentinaAmy Elsner PROPOSAL
Ricardo GauchoRussiaAsiya Javayant UNQUALIFIED
Greenwood BologniaItalyXuxue Feng PROPOSAL
Deepesh ChuiBrazilBernardo Dominic UNQUALIFIED
Antonio CaudyItalyAmy Elsner PROPOSAL
Deepesh ChuiUnited KingdomXuxue Feng UNQUALIFIED
Silvio SlusarskiArgentinaBernardo Dominic UNQUALIFIED
Mujtaba NickaArgentinaBernardo Dominic NEW
Faith GillianIndiaBernardo Dominic RENEWAL
Munro FerenczGermanyStephen Shaw NEW
Salvatore StockhamItalyOnyama Limba NEW
Leon OldroydJapanAnna Fali NEGOTIATION
Leon OldroydFranceIvan Magalhaes PROPOSAL
Mujtaba NickaCanadaAnna Fali RENEWAL
Mayumi KolmetzBrazilBernardo Dominic QUALIFIED
Maisha RulapaughIndiaIvan Magalhaes RENEWAL
David DarakjyArgentinaOnyama Limba NEGOTIATION
Jennifer AmigonSpainElwin Sharvill UNQUALIFIED
Alejandro PerinItalyAmy Elsner UNQUALIFIED
Izzy GarufiGermanyAsiya Javayant RENEWAL
Leon OldroydBrazilXuxue Feng NEW
Salvatore StockhamCanadaXuxue Feng UNQUALIFIED
Leja CaldareraArgentinaStephen Shaw UNQUALIFIED
Kaitlin OstroskyCanadaStephen Shaw RENEWAL
Chavez BriddickCanadaStephen Shaw RENEWAL
Leja CaldareraFranceElwin Sharvill QUALIFIED
Murillo MaletIndiaBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Silvio SlusarskiFranceIoni Bowcher PROPOSAL
James ButtAustraliaAmy Elsner RENEWAL
Ricardo GauchoBrazilXuxue Feng NEGOTIATION
Mujtaba NickaUnited KingdomIoni Bowcher QUALIFIED
Jeanfrancois VenereIndiaAmy Elsner QUALIFIED
Johnson SergiJapanBernardo Dominic UNQUALIFIED
Cody SaylorsIndiaElwin Sharvill RENEWAL
Tony FollerFranceIvan Magalhaes NEW
Costa DilliardItalyAsiya Javayant UNQUALIFIED
Silvio SlusarskiGermanyAmy Elsner NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha RulapaughIndia2026-05-18Truhlar And Truhlar Attys UNQUALIFIED80Onyama Limba
1001Ivar PaprockiFrance2026-05-10Commercial Press NEW35Asiya Javayant
1002Jefferson SchemmerArgentina2026-05-21Benton, John B Jr NEW12Ioni Bowcher
1003Kadeem FlosiAustralia2026-05-21Benton, John B Jr RENEWAL11Bernardo Dominic
1004Silvio SlusarskiFrance2026-05-29King, Christopher A Esq NEGOTIATION51Amy Elsner
1005Smith GlickGermany2026-05-07Rousseaux, Michael Esq UNQUALIFIED84Anna Fali
1006Claire TollnerIndia2026-05-24Chemel, James L Cpa UNQUALIFIED7Bernardo Dominic
1007Leon OldroydSpain2026-05-29Printing Dimensions QUALIFIED81Stephen Shaw
1008James ButtBrazil2026-05-19Truhlar And Truhlar Attys RENEWAL82Asiya Javayant
1009Tony FollerBrazil2026-05-27King, Christopher A Esq RENEWAL41Ioni Bowcher
1010Julie StensethRussia2026-05-21King, Christopher A Esq PROPOSAL11Amy Elsner
1011Stacey MacleadSpain2026-05-02Feltz Printing Service NEW27Ivan Magalhaes
1012Salvatore StockhamGermany2026-05-17Printing Dimensions RENEWAL73Xuxue Feng
1013Murillo MaletFrance2026-05-24Rousseaux, Michael Esq NEGOTIATION63Onyama Limba
1014Silvio SlusarskiBrazil2026-05-31Rousseaux, Michael Esq NEGOTIATION14Ioni Bowcher
1015Smith GlickJapan2026-05-12Printing Dimensions PROPOSAL28Anna Fali
1016Kadeem FlosiGermany2026-05-18Rangoni Of Florence UNQUALIFIED78Onyama Limba
1017Silvio SlusarskiFrance2026-05-18Benton, John B Jr UNQUALIFIED4Ioni Bowcher
1018Ricardo GauchoBrazil2026-05-27Morlong Associates RENEWAL46Elwin Sharvill
1019Misaki RoysterItaly2026-05-06Chapman, Ross E Esq UNQUALIFIED23Ivan Magalhaes
1020Wickens NestleCanada2026-05-19Chapman, Ross E Esq RENEWAL85Elwin Sharvill
1021Darci PoquetteBrazil2026-05-24Dorl, James J Esq UNQUALIFIED75Stephen Shaw
1022Sinclair WaycottArgentina2026-05-31Buckley Miller Wright PROPOSAL3Amy Elsner
1023Morrow RutaCanada2026-05-02Benton, John B Jr NEW88Onyama Limba
1024Kadeem FlosiBrazil2026-05-29Truhlar And Truhlar Attys RENEWAL20Bernardo Dominic
1025Izzy GarufiSpain2026-05-27Truhlar And Truhlar Attys UNQUALIFIED39Anna Fali
1026Antonio CaudyAustralia2026-05-05Buckley Miller Wright RENEWAL31Xuxue Feng
1027Misaki RoysterItaly2026-05-21Benton, John B Jr UNQUALIFIED31Anna Fali
1028Emily WhobreyItaly2026-05-10Rangoni Of Florence RENEWAL81Bernardo Dominic
1029Jones VocelkaCanada2026-05-24Printing Dimensions QUALIFIED31Stephen Shaw
1030Stacey MacleadSpain2026-05-13Truhlar And Truhlar Attys RENEWAL5Amy Elsner
1031Faith GillianJapan2026-05-23Printing Dimensions RENEWAL84Asiya Javayant
1032Leon OldroydSpain2026-05-05Buckley Miller Wright QUALIFIED53Xuxue Feng
1033Jennifer AmigonJapan2026-05-05Dorl, James J Esq PROPOSAL8Xuxue Feng
1034Emily WhobreyBrazil2026-05-04Chapman, Ross E Esq NEGOTIATION57Bernardo Dominic
1035Murillo MaletCanada2026-05-16Chanay, Jeffrey A Esq QUALIFIED58Amy Elsner
1036Tony FollerSpain2026-05-05Feltz Printing Service RENEWAL4Onyama Limba
1037Tony FollerCanada2026-05-20Buckley Miller Wright UNQUALIFIED82Xuxue Feng
1038Maisha RulapaughIndia2026-05-30Rousseaux, Michael Esq RENEWAL4Onyama Limba
1039Silvio SlusarskiRussia2026-05-15Feiner Bros UNQUALIFIED0Ivan Magalhaes
1040Faith GillianBrazil2026-05-18Dorl, James J Esq UNQUALIFIED6Amy Elsner
1041Izzy GarufiIndia2026-05-06Benton, John B Jr PROPOSAL50Onyama Limba
1042Kadeem FlosiSpain2026-05-26Truhlar And Truhlar Attys RENEWAL94Bernardo Dominic
1043Antonio CaudyGermany2026-05-30King, Christopher A Esq QUALIFIED89Ivan Magalhaes
1044Leon OldroydJapan2026-05-13King, Christopher A Esq UNQUALIFIED87Amy Elsner
1045James ButtJapan2026-05-08Truhlar And Truhlar Attys PROPOSAL22Bernardo Dominic
1046Rodrigues CampainIndia2026-05-02Feltz Printing Service NEGOTIATION53Elwin Sharvill
1047Rodrigues CampainBrazil2026-05-13Buckley Miller Wright UNQUALIFIED78Bernardo Dominic
1048Smith GlickJapan2026-05-31Feltz Printing Service RENEWAL40Bernardo Dominic
1049Maria MarrierCanada2026-05-02Benton, John B Jr UNQUALIFIED34Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Jennifer AmigonRussiaAnna Fali NEW
Sinclair WaycottGermanyAmy Elsner UNQUALIFIED
Chavez BriddickSpainAnna Fali PROPOSAL
Rodrigues CampainAustraliaBernardo Dominic QUALIFIED
Jefferson SchemmerRussiaOnyama Limba UNQUALIFIED
Ricardo GauchoItalyXuxue Feng UNQUALIFIED
Jennifer AmigonIndiaAmy Elsner NEGOTIATION
Ivar PaprockiAustraliaOnyama Limba RENEWAL
Emily WhobreyArgentinaIoni Bowcher PROPOSAL
Aditya KuskoJapanAmy Elsner RENEWAL
Leon OldroydBrazilElwin Sharvill PROPOSAL
Ricardo GauchoGermanyOnyama Limba NEGOTIATION
Jefferson SchemmerSpainAnna Fali NEW
Julie StensethSpainAmy Elsner RENEWAL
Emily WhobreyIndiaIvan Magalhaes NEGOTIATION
Aika InouyeIndiaXuxue Feng QUALIFIED
Kaitlin OstroskyGermanyBernardo Dominic UNQUALIFIED
Clifford RimGermanyAmy Elsner PROPOSAL
Jefferson SchemmerBrazilOnyama Limba UNQUALIFIED
Aditya KuskoCanadaElwin Sharvill RENEWAL
Clifford RimUnited KingdomBernardo Dominic NEGOTIATION
Sinclair WaycottIndiaXuxue Feng NEW
Antonio CaudyRussiaXuxue Feng NEGOTIATION
Maisha RulapaughFranceIoni Bowcher UNQUALIFIED
Silvio SlusarskiFranceXuxue Feng QUALIFIED
Isabel BowleyRussiaIoni Bowcher QUALIFIED
Chavez BriddickItalyAnna Fali QUALIFIED
Adams MorascaUnited KingdomAmy Elsner NEGOTIATION
Murillo MaletItalyIvan Magalhaes UNQUALIFIED
Misaki RoysterBrazilAnna Fali PROPOSAL
Mujtaba NickaSpainOnyama Limba UNQUALIFIED
Ashley DoeArgentinaAmy Elsner NEGOTIATION
Jefferson SchemmerUnited KingdomBernardo Dominic PROPOSAL
Murillo MaletJapanIvan Magalhaes PROPOSAL
Salvatore StockhamRussiaIoni Bowcher NEW
James ButtUnited KingdomIvan Magalhaes UNQUALIFIED
Claire TollnerCanadaIvan Magalhaes UNQUALIFIED
Munro FerenczSpainIvan Magalhaes QUALIFIED
Wickens NestleJapanElwin Sharvill NEW
Ricardo GauchoCanadaAnna Fali RENEWAL
Kadeem FlosiJapanStephen Shaw RENEWAL
Costa DilliardJapanOnyama Limba NEW
Munro FerenczFranceStephen Shaw UNQUALIFIED
Misaki RoysterJapanBernardo Dominic QUALIFIED
Greenwood BologniaGermanyAnna Fali PROPOSAL
Tony FollerCanadaIoni Bowcher QUALIFIED
Arvin AlbaresBrazilAsiya Javayant QUALIFIED
Salvatore StockhamArgentinaStephen Shaw RENEWAL
Julie StensethSpainIoni Bowcher QUALIFIED
Francesco ShinkoJapanElwin Sharvill NEW
Frozen Columns
Name
Adams Morasca
Izzy Garufi
Julie Stenseth
Jennifer Amigon
Munro Ferencz
Deepesh Chui
Kadeem Flosi
Rodrigues Campain
Izzy Garufi
Greenwood Bolognia
Ricardo Gaucho
Aika Inouye
Ashley Doe
Greenwood Bolognia
Jones Vocelka
Mayumi Kolmetz
Aika Inouye
Ricardo Gaucho
Antonio Caudy
Octavia Malet
Isabel Bowley
Cody Saylors
David Darakjy
Greenwood Bolognia
Stacey Maclead
Aika Inouye
Adams Morasca
Juan Wieser
Clifford Rim
Aruna Figeroa
Kaitlin Ostrosky
Ivar Paprocki
Clifford Rim
Alejandro Perin
Wickens Nestle
Munro Ferencz
Nicolas Iturbide
Alejandro Perin
Alejandro Perin
Aditya Kusko
Leja Caldarera
Aditya Kusko
Leon Oldroyd
Arvin Albares
Mujtaba Nicka
Ricardo Gaucho
Deepesh Chui
Cody Saylors
Maisha Rulapaugh
Chavez Briddick
IdCountryDate
1000Japan2026-05-13
1001India2026-05-16
1002India2026-05-30
1003Russia2026-05-06
1004Russia2026-05-27
1005France2026-05-22
1006Canada2026-05-24
1007Spain2026-05-31
1008United Kingdom2026-05-24
1009United Kingdom2026-05-22
1010Argentina2026-05-16
1011Canada2026-05-21
1012Russia2026-05-24
1013Russia2026-05-19
1014India2026-05-26
1015Italy2026-05-27
1016Argentina2026-05-06
1017France2026-05-05
1018Russia2026-05-07
1019Canada2026-05-11
1020India2026-05-08
1021Brazil2026-05-29
1022Argentina2026-05-20
1023United Kingdom2026-05-04
1024India2026-05-09
1025Italy2026-05-05
1026Argentina2026-05-02
1027United Kingdom2026-05-19
1028Argentina2026-05-15
1029France2026-05-04
1030Canada2026-05-25
1031Russia2026-05-05
1032Canada2026-05-04
1033Argentina2026-05-03
1034United Kingdom2026-05-17
1035Japan2026-05-23
1036India2026-05-03
1037India2026-05-06
1038United Kingdom2026-05-19
1039Italy2026-05-11
1040Italy2026-05-10
1041Brazil2026-05-22
1042Brazil2026-05-23
1043Argentina2026-05-24
1044Germany2026-05-17
1045Argentina2026-05-28
1046Argentina2026-05-02
1047Canada2026-05-31
1048United Kingdom2026-05-14
1049Brazil2026-05-03

On-Demand Data

NameIdCountryDate
Ricardo Gaucho1000Germany2026-05-13
Salvatore Stockham1001Canada2026-05-02
Kaitlin Ostrosky1002Spain2026-05-20
Aditya Kusko1003United Kingdom2026-05-14
Mujtaba Nicka1004Germany2026-05-10
Mujtaba Nicka1005Russia2026-05-09
James Butt1006Spain2026-05-12
Darci Poquette1007Japan2026-05-29
Murillo Malet1008Russia2026-05-20
Aditya Kusko1009India2026-05-10
Alejandro Perin1010Canada2026-05-27
Kaitlin Ostrosky1011Australia2026-05-17
Jeanfrancois Venere1012France2026-05-19
Aika Inouye1013Australia2026-05-03
Ricardo Gaucho1014Japan2026-05-21
Stacey Maclead1015India2026-05-17
Jefferson Schemmer1016Australia2026-05-10
Darci Poquette1017Russia2026-05-27
Alejandro Perin1018Germany2026-05-20
Mayumi Kolmetz1019Japan2026-05-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleSpainBernardo Dominic PROPOSAL
Stacey MacleadIndiaAmy Elsner UNQUALIFIED
Costa DilliardArgentinaBernardo Dominic NEW
Ricardo GauchoSpainOnyama Limba UNQUALIFIED
Greenwood BologniaAustraliaAsiya Javayant RENEWAL
Jones VocelkaFranceIvan Magalhaes NEGOTIATION
Izzy GarufiCanadaStephen Shaw NEGOTIATION
Antonio CaudyAustraliaBernardo Dominic NEGOTIATION
Silvio SlusarskiArgentinaOnyama Limba NEW
Alejandro PerinGermanyAnna Fali RENEWAL
Jones VocelkaSpainIoni Bowcher QUALIFIED
Octavia MaletArgentinaOnyama Limba UNQUALIFIED
Juan WieserAustraliaAsiya Javayant RENEWAL
Aruna FigeroaJapanAmy Elsner NEW
Arvin AlbaresUnited KingdomStephen Shaw NEW
David DarakjySpainAsiya Javayant NEW
Smith GlickCanadaAnna Fali NEW
Kaitlin OstroskyBrazilAnna Fali UNQUALIFIED
Aika InouyeIndiaStephen Shaw QUALIFIED
Arvin AlbaresBrazilElwin Sharvill RENEWAL
Octavia MaletUnited KingdomXuxue Feng NEW
Salvatore StockhamArgentinaElwin Sharvill RENEWAL
Kaitlin OstroskyJapanAmy Elsner NEGOTIATION
Misaki RoysterArgentinaIvan Magalhaes UNQUALIFIED
Smith GlickJapanAsiya Javayant QUALIFIED
Munro FerenczRussiaAmy Elsner UNQUALIFIED
Aditya KuskoFranceStephen Shaw PROPOSAL
Munro FerenczIndiaOnyama Limba QUALIFIED
Leon OldroydItalyAnna Fali NEGOTIATION
Adams MorascaIndiaBernardo Dominic QUALIFIED
Chavez BriddickIndiaAnna Fali NEGOTIATION
Jefferson SchemmerUnited KingdomAmy Elsner RENEWAL
Costa DilliardItalyBernardo Dominic RENEWAL
Faith GillianGermanyIoni Bowcher QUALIFIED
Silvio SlusarskiIndiaBernardo Dominic QUALIFIED
Adams MorascaJapanIvan Magalhaes NEGOTIATION
Greenwood BologniaSpainElwin Sharvill NEW
Murillo MaletBrazilAmy Elsner NEGOTIATION
Leon OldroydAustraliaBernardo Dominic NEGOTIATION
Jones VocelkaAustraliaElwin Sharvill UNQUALIFIED

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