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
Sinclair WaycottRussiaIoni Bowcher RENEWAL
Juan WieserFranceStephen Shaw QUALIFIED
Kaitlin OstroskyIndiaAnna Fali UNQUALIFIED
Aika InouyeIndiaElwin Sharvill NEGOTIATION
Wickens NestleCanadaAsiya Javayant RENEWAL
Alejandro PerinJapanXuxue Feng QUALIFIED
Ricardo GauchoJapanAmy Elsner NEGOTIATION
Costa DilliardCanadaOnyama Limba QUALIFIED
Johnson SergiIndiaAsiya Javayant RENEWAL
Aditya KuskoSpainOnyama Limba RENEWAL
James ButtAustraliaElwin Sharvill UNQUALIFIED
Wickens NestleUnited KingdomAsiya Javayant PROPOSAL
Rodrigues CampainJapanAnna Fali QUALIFIED
Rodrigues CampainCanadaXuxue Feng UNQUALIFIED
Kaitlin OstroskyArgentinaBernardo Dominic UNQUALIFIED
Maria MarrierArgentinaAsiya Javayant RENEWAL
Jefferson SchemmerFranceAsiya Javayant PROPOSAL
Leon OldroydAustraliaOnyama Limba NEW
Chavez BriddickJapanOnyama Limba NEW
David DarakjyArgentinaElwin Sharvill UNQUALIFIED
Salvatore StockhamBrazilAmy Elsner UNQUALIFIED
Misaki RoysterFranceAnna Fali QUALIFIED
Arvin AlbaresGermanyXuxue Feng NEGOTIATION
Claire TollnerFranceAnna Fali UNQUALIFIED
Misaki RoysterBrazilAmy Elsner PROPOSAL
Francesco ShinkoBrazilIvan Magalhaes UNQUALIFIED
Faith GillianRussiaXuxue Feng QUALIFIED
Claire TollnerJapanBernardo Dominic QUALIFIED
Deepesh ChuiIndiaAmy Elsner QUALIFIED
Jefferson SchemmerIndiaStephen Shaw PROPOSAL
Ivar PaprockiItalyAmy Elsner PROPOSAL
Silvio SlusarskiFranceXuxue Feng PROPOSAL
Izzy GarufiAustraliaOnyama Limba NEGOTIATION
James ButtBrazilStephen Shaw NEGOTIATION
Alejandro PerinIndiaElwin Sharvill QUALIFIED
Cody SaylorsArgentinaIoni Bowcher UNQUALIFIED
Smith GlickIndiaAmy Elsner PROPOSAL
Jennifer AmigonJapanElwin Sharvill RENEWAL
Jones VocelkaBrazilElwin Sharvill NEGOTIATION
James ButtItalyIoni Bowcher RENEWAL
Adams MorascaUnited KingdomStephen Shaw NEGOTIATION
Aruna FigeroaFranceAmy Elsner RENEWAL
Clifford RimBrazilOnyama Limba NEGOTIATION
Munro FerenczCanadaAnna Fali NEW
Mujtaba NickaFranceIvan Magalhaes UNQUALIFIED
Sinclair WaycottIndiaBernardo Dominic RENEWAL
Julie StensethAustraliaOnyama Limba PROPOSAL
Adams MorascaItalyOnyama Limba QUALIFIED
Misaki RoysterBrazilOnyama Limba RENEWAL
Aruna FigeroaIndiaBernardo Dominic UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Arvin AlbaresSpainAsiya Javayant RENEWAL
Adams MorascaArgentinaIoni Bowcher RENEWAL
Sinclair WaycottBrazilAmy Elsner NEW
Stacey MacleadUnited KingdomBernardo Dominic PROPOSAL
Aruna FigeroaItalyIoni Bowcher NEGOTIATION
Jones VocelkaUnited KingdomAsiya Javayant RENEWAL
Jefferson SchemmerCanadaElwin Sharvill PROPOSAL
Rodrigues CampainUnited KingdomXuxue Feng NEW
Mujtaba NickaSpainElwin Sharvill UNQUALIFIED
Ricardo GauchoUnited KingdomIoni Bowcher NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody SaylorsRussia2026-06-14Chemel, James L Cpa UNQUALIFIED67Asiya Javayant
1001Mujtaba NickaBrazil2026-05-28Buckley Miller Wright QUALIFIED50Amy Elsner
1002David DarakjyCanada2026-06-10Feiner Bros NEGOTIATION93Asiya Javayant
1003Aruna FigeroaIndia2026-06-13Benton, John B Jr QUALIFIED29Ioni Bowcher
1004Nicolas IturbideAustralia2026-05-23Dorl, James J Esq PROPOSAL68Xuxue Feng
1005Aruna FigeroaUnited Kingdom2026-06-01Chemel, James L Cpa NEGOTIATION79Amy Elsner
1006Maria MarrierGermany2026-05-19Chemel, James L Cpa NEW56Onyama Limba
1007Mayumi KolmetzArgentina2026-06-12Buckley Miller Wright UNQUALIFIED69Anna Fali
1008Kaitlin OstroskySpain2026-06-10Printing Dimensions NEGOTIATION33Elwin Sharvill
1009Silvio SlusarskiJapan2026-05-19Chapman, Ross E Esq NEGOTIATION20Ioni Bowcher
1010Tony FollerGermany2026-05-30Buckley Miller Wright PROPOSAL36Stephen Shaw
1011Jennifer AmigonRussia2026-06-08Feiner Bros UNQUALIFIED5Xuxue Feng
1012Rodrigues CampainItaly2026-05-19Chapman, Ross E Esq PROPOSAL81Asiya Javayant
1013Aditya KuskoCanada2026-05-30Benton, John B Jr PROPOSAL39Bernardo Dominic
1014Silvio SlusarskiFrance2026-06-03Feiner Bros UNQUALIFIED58Ioni Bowcher
1015Greenwood BologniaCanada2026-06-04King, Christopher A Esq UNQUALIFIED98Amy Elsner
1016Izzy GarufiBrazil2026-06-11Chanay, Jeffrey A Esq PROPOSAL14Ivan Magalhaes
1017Clifford RimSpain2026-05-22Dorl, James J Esq RENEWAL1Elwin Sharvill
1018Maisha RulapaughUnited Kingdom2026-06-08Chapman, Ross E Esq RENEWAL47Ivan Magalhaes
1019Arvin AlbaresUnited Kingdom2026-06-08Rangoni Of Florence NEW89Anna Fali
1020Greenwood BologniaAustralia2026-06-15Rousseaux, Michael Esq QUALIFIED55Anna Fali
1021Isabel BowleyCanada2026-05-22Rousseaux, Michael Esq RENEWAL78Xuxue Feng
1022Jennifer AmigonUnited Kingdom2026-05-31Rangoni Of Florence PROPOSAL70Anna Fali
1023Sinclair WaycottUnited Kingdom2026-06-07King, Christopher A Esq PROPOSAL90Stephen Shaw
1024David DarakjyBrazil2026-06-06Feltz Printing Service NEGOTIATION91Bernardo Dominic
1025Kadeem FlosiUnited Kingdom2026-06-13Feiner Bros NEGOTIATION39Stephen Shaw
1026Salvatore StockhamAustralia2026-05-22Commercial Press UNQUALIFIED7Anna Fali
1027Izzy GarufiItaly2026-05-24Rangoni Of Florence RENEWAL75Ioni Bowcher
1028Claire TollnerUnited Kingdom2026-06-04Chanay, Jeffrey A Esq UNQUALIFIED1Bernardo Dominic
1029Clifford RimFrance2026-06-12Chemel, James L Cpa RENEWAL29Ioni Bowcher
1030Antonio CaudyArgentina2026-05-27Rousseaux, Michael Esq UNQUALIFIED12Ioni Bowcher
1031Sinclair WaycottUnited Kingdom2026-06-13Morlong Associates NEGOTIATION12Stephen Shaw
1032Ricardo GauchoGermany2026-05-20Rangoni Of Florence NEW35Elwin Sharvill
1033Costa DilliardCanada2026-06-04Rousseaux, Michael Esq NEW56Amy Elsner
1034Cody SaylorsGermany2026-05-26Commercial Press PROPOSAL70Bernardo Dominic
1035Emily WhobreyJapan2026-05-19Dorl, James J Esq PROPOSAL0Onyama Limba
1036Silvio SlusarskiIndia2026-05-24Truhlar And Truhlar Attys PROPOSAL84Asiya Javayant
1037Stacey MacleadArgentina2026-05-28Chapman, Ross E Esq NEW6Xuxue Feng
1038Ashley DoeCanada2026-06-08King, Christopher A Esq RENEWAL36Elwin Sharvill
1039Misaki RoysterBrazil2026-06-16Rangoni Of Florence NEW64Asiya Javayant
1040Costa DilliardAustralia2026-06-08King, Christopher A Esq NEGOTIATION68Bernardo Dominic
1041Silvio SlusarskiItaly2026-06-16Rousseaux, Michael Esq PROPOSAL42Ioni Bowcher
1042Johnson SergiSpain2026-05-30Chanay, Jeffrey A Esq NEGOTIATION84Anna Fali
1043Jefferson SchemmerItaly2026-06-11Chapman, Ross E Esq NEW26Stephen Shaw
1044Francesco ShinkoItaly2026-05-27Morlong Associates PROPOSAL1Asiya Javayant
1045Mujtaba NickaArgentina2026-06-05Feiner Bros NEW40Elwin Sharvill
1046Jeanfrancois VenereRussia2026-05-30Chanay, Jeffrey A Esq NEGOTIATION86Asiya Javayant
1047Cody SaylorsUnited Kingdom2026-06-16Dorl, James J Esq PROPOSAL16Xuxue Feng
1048James ButtFrance2026-05-29Rangoni Of Florence UNQUALIFIED54Xuxue Feng
1049Izzy GarufiAustralia2026-06-16King, Christopher A Esq QUALIFIED57Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Costa DilliardGermanyAnna Fali PROPOSAL
Jones VocelkaItalyIoni Bowcher PROPOSAL
Claire TollnerUnited KingdomAnna Fali NEGOTIATION
Greenwood BologniaCanadaElwin Sharvill PROPOSAL
Misaki RoysterGermanyAnna Fali NEGOTIATION
Leja CaldareraAustraliaAsiya Javayant RENEWAL
Wickens NestleFranceOnyama Limba UNQUALIFIED
Izzy GarufiItalyIoni Bowcher UNQUALIFIED
David DarakjyItalyBernardo Dominic UNQUALIFIED
Misaki RoysterCanadaAsiya Javayant NEW
Maisha RulapaughCanadaOnyama Limba QUALIFIED
Aruna FigeroaAustraliaAsiya Javayant UNQUALIFIED
Kaitlin OstroskyJapanBernardo Dominic NEW
Kadeem FlosiRussiaAnna Fali UNQUALIFIED
Izzy GarufiFranceAsiya Javayant PROPOSAL
Maisha RulapaughFranceIvan Magalhaes NEGOTIATION
Antonio CaudyArgentinaAsiya Javayant NEW
Greenwood BologniaCanadaStephen Shaw PROPOSAL
Alejandro PerinUnited KingdomStephen Shaw NEW
Izzy GarufiCanadaAmy Elsner UNQUALIFIED
Julie StensethBrazilAsiya Javayant UNQUALIFIED
Munro FerenczBrazilIvan Magalhaes UNQUALIFIED
Salvatore StockhamBrazilXuxue Feng NEGOTIATION
Ivar PaprockiBrazilElwin Sharvill NEW
Nicolas IturbideGermanyIoni Bowcher RENEWAL
Octavia MaletArgentinaXuxue Feng PROPOSAL
Aruna FigeroaBrazilAmy Elsner NEGOTIATION
Darci PoquetteArgentinaAnna Fali NEW
Silvio SlusarskiArgentinaAnna Fali RENEWAL
Jeanfrancois VenereAustraliaIoni Bowcher NEGOTIATION
Jefferson SchemmerCanadaXuxue Feng NEW
Sinclair WaycottCanadaXuxue Feng PROPOSAL
Clifford RimBrazilBernardo Dominic NEW
Darci PoquetteUnited KingdomBernardo Dominic NEGOTIATION
Stacey MacleadUnited KingdomAnna Fali NEGOTIATION
Juan WieserRussiaIvan Magalhaes UNQUALIFIED
Deepesh ChuiFranceIoni Bowcher PROPOSAL
Aika InouyeAustraliaStephen Shaw QUALIFIED
Smith GlickUnited KingdomAmy Elsner NEW
Smith GlickRussiaXuxue Feng NEGOTIATION
Misaki RoysterItalyIvan Magalhaes UNQUALIFIED
Jennifer AmigonGermanyIvan Magalhaes UNQUALIFIED
Faith GillianBrazilBernardo Dominic NEGOTIATION
Kaitlin OstroskyJapanIoni Bowcher RENEWAL
Antonio CaudyBrazilElwin Sharvill RENEWAL
Ivar PaprockiRussiaAmy Elsner RENEWAL
Claire TollnerJapanStephen Shaw NEGOTIATION
Kaitlin OstroskyGermanyIoni Bowcher PROPOSAL
Izzy GarufiRussiaElwin Sharvill RENEWAL
Smith GlickArgentinaStephen Shaw PROPOSAL
Frozen Columns
Name
Johnson Sergi
Kaitlin Ostrosky
Chavez Briddick
Clifford Rim
Maisha Rulapaugh
Emily Whobrey
Salvatore Stockham
Francesco Shinko
Johnson Sergi
Greenwood Bolognia
Deepesh Chui
Adams Morasca
Misaki Royster
Mujtaba Nicka
Maria Marrier
Silvio Slusarski
Aruna Figeroa
Ricardo Gaucho
Nicolas Iturbide
Isabel Bowley
Ricardo Gaucho
Maria Marrier
Emily Whobrey
Tony Foller
Costa Dilliard
Alejandro Perin
Kaitlin Ostrosky
Mujtaba Nicka
Isabel Bowley
Wickens Nestle
Tony Foller
Octavia Malet
Ashley Doe
Stacey Maclead
Francesco Shinko
Claire Tollner
Leja Caldarera
Mayumi Kolmetz
Jefferson Schemmer
Salvatore Stockham
Ashley Doe
Claire Tollner
Morrow Ruta
Greenwood Bolognia
Claire Tollner
Johnson Sergi
Faith Gillian
Maisha Rulapaugh
Aditya Kusko
Isabel Bowley
IdCountryDate
1000Canada2026-06-17
1001Italy2026-05-25
1002United Kingdom2026-05-29
1003Brazil2026-06-03
1004France2026-05-27
1005Argentina2026-06-16
1006India2026-05-24
1007India2026-06-06
1008Germany2026-06-02
1009Canada2026-05-19
1010Japan2026-06-15
1011United Kingdom2026-05-28
1012Russia2026-06-17
1013Canada2026-05-27
1014France2026-06-14
1015France2026-05-26
1016France2026-05-27
1017France2026-06-12
1018Canada2026-06-13
1019Germany2026-05-29
1020Canada2026-05-19
1021Brazil2026-05-23
1022Brazil2026-06-14
1023Japan2026-05-28
1024Russia2026-05-31
1025Canada2026-05-26
1026Japan2026-06-09
1027India2026-06-17
1028Russia2026-05-21
1029Japan2026-05-29
1030Spain2026-06-14
1031Spain2026-05-26
1032Japan2026-06-11
1033Argentina2026-06-01
1034France2026-05-22
1035Canada2026-05-23
1036Australia2026-06-17
1037Australia2026-05-21
1038Italy2026-06-06
1039Brazil2026-06-12
1040Japan2026-05-22
1041France2026-05-27
1042Argentina2026-05-19
1043Japan2026-06-03
1044Spain2026-06-06
1045Germany2026-06-04
1046Japan2026-05-31
1047Russia2026-06-09
1048Canada2026-05-28
1049France2026-06-03

On-Demand Data

NameIdCountryDate
Leja Caldarera1000Canada2026-05-23
Mayumi Kolmetz1001Italy2026-06-16
Silvio Slusarski1002Russia2026-06-09
Juan Wieser1003Brazil2026-06-02
Ashley Doe1004Russia2026-06-12
Misaki Royster1005Italy2026-06-05
Clifford Rim1006Australia2026-05-31
Murillo Malet1007Japan2026-06-06
Aruna Figeroa1008Japan2026-06-05
Maria Marrier1009Italy2026-06-04
Mujtaba Nicka1010Japan2026-06-14
Octavia Malet1011France2026-06-11
Greenwood Bolognia1012Japan2026-06-08
David Darakjy1013France2026-05-31
Kadeem Flosi1014Spain2026-06-11
Maisha Rulapaugh1015Germany2026-06-08
Francesco Shinko1016Spain2026-05-28
Mujtaba Nicka1017United Kingdom2026-06-08
Jeanfrancois Venere1018Italy2026-06-02
David Darakjy1019Australia2026-06-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jones VocelkaAustraliaAmy Elsner PROPOSAL
Cody SaylorsArgentinaIoni Bowcher RENEWAL
Rodrigues CampainItalyAnna Fali PROPOSAL
Wickens NestleJapanAsiya Javayant NEW
Chavez BriddickUnited KingdomBernardo Dominic NEGOTIATION
Leja CaldareraCanadaAsiya Javayant UNQUALIFIED
Octavia MaletAustraliaAsiya Javayant NEGOTIATION
Mujtaba NickaJapanAsiya Javayant QUALIFIED
Leja CaldareraAustraliaOnyama Limba RENEWAL
Chavez BriddickJapanAmy Elsner PROPOSAL
Arvin AlbaresSpainBernardo Dominic NEGOTIATION
Tony FollerRussiaAmy Elsner RENEWAL
Maisha RulapaughIndiaOnyama Limba NEW
Mayumi KolmetzRussiaXuxue Feng RENEWAL
Johnson SergiRussiaOnyama Limba RENEWAL
Cody SaylorsCanadaAmy Elsner QUALIFIED
Nicolas IturbideAustraliaIoni Bowcher PROPOSAL
Jennifer AmigonBrazilStephen Shaw PROPOSAL
Jefferson SchemmerCanadaXuxue Feng QUALIFIED
Clifford RimArgentinaIvan Magalhaes RENEWAL
Arvin AlbaresRussiaElwin Sharvill NEGOTIATION
Ivar PaprockiAustraliaElwin Sharvill QUALIFIED
Rodrigues CampainBrazilAnna Fali PROPOSAL
Ivar PaprockiIndiaElwin Sharvill UNQUALIFIED
Silvio SlusarskiGermanyStephen Shaw QUALIFIED
Darci PoquetteSpainOnyama Limba UNQUALIFIED
Adams MorascaUnited KingdomAmy Elsner UNQUALIFIED
Murillo MaletUnited KingdomElwin Sharvill NEGOTIATION
Murillo MaletGermanyAmy Elsner NEGOTIATION
Adams MorascaRussiaStephen Shaw NEGOTIATION
Deepesh ChuiIndiaElwin Sharvill QUALIFIED
Darci PoquetteItalyBernardo Dominic RENEWAL
Mujtaba NickaGermanyAnna Fali NEW
Faith GillianAustraliaAsiya Javayant QUALIFIED
Chavez BriddickFranceIvan Magalhaes PROPOSAL
Leon OldroydIndiaAmy Elsner RENEWAL
Ricardo GauchoFranceElwin Sharvill NEGOTIATION
Aika InouyeGermanyAsiya Javayant NEW
Faith GillianItalyStephen Shaw NEGOTIATION
Leja CaldareraArgentinaAmy Elsner NEW

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