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
Salvatore StockhamCanadaElwin Sharvill RENEWAL
Mujtaba NickaGermanyAmy Elsner NEGOTIATION
Jones VocelkaSpainOnyama Limba NEGOTIATION
Juan WieserRussiaBernardo Dominic RENEWAL
Izzy GarufiJapanAsiya Javayant RENEWAL
Morrow RutaRussiaAmy Elsner NEW
Izzy GarufiRussiaStephen Shaw RENEWAL
Maria MarrierSpainXuxue Feng QUALIFIED
Emily WhobreyBrazilOnyama Limba QUALIFIED
Maria MarrierGermanyElwin Sharvill RENEWAL
Munro FerenczSpainBernardo Dominic RENEWAL
Cody SaylorsSpainAnna Fali NEW
Jefferson SchemmerCanadaXuxue Feng NEGOTIATION
Misaki RoysterUnited KingdomAnna Fali NEGOTIATION
Rodrigues CampainJapanIoni Bowcher PROPOSAL
Silvio SlusarskiCanadaXuxue Feng NEGOTIATION
Cody SaylorsCanadaAmy Elsner UNQUALIFIED
Clifford RimUnited KingdomXuxue Feng RENEWAL
Leon OldroydFranceStephen Shaw NEGOTIATION
Maria MarrierSpainElwin Sharvill QUALIFIED
Jennifer AmigonFranceIvan Magalhaes NEW
Ricardo GauchoJapanXuxue Feng RENEWAL
Misaki RoysterSpainAmy Elsner NEGOTIATION
Costa DilliardItalyAnna Fali RENEWAL
Mujtaba NickaAustraliaXuxue Feng RENEWAL
Silvio SlusarskiUnited KingdomIoni Bowcher RENEWAL
David DarakjyBrazilAsiya Javayant PROPOSAL
Aditya KuskoAustraliaIoni Bowcher PROPOSAL
Izzy GarufiRussiaAmy Elsner PROPOSAL
Tony FollerArgentinaIvan Magalhaes NEGOTIATION
Mujtaba NickaAustraliaBernardo Dominic PROPOSAL
Misaki RoysterSpainAmy Elsner UNQUALIFIED
Kaitlin OstroskySpainIoni Bowcher NEGOTIATION
Munro FerenczAustraliaIoni Bowcher QUALIFIED
Faith GillianFranceAmy Elsner RENEWAL
Izzy GarufiItalyElwin Sharvill QUALIFIED
David DarakjyBrazilIoni Bowcher QUALIFIED
Juan WieserGermanyBernardo Dominic RENEWAL
Wickens NestleItalyAsiya Javayant NEGOTIATION
Costa DilliardUnited KingdomBernardo Dominic UNQUALIFIED
Morrow RutaCanadaXuxue Feng NEGOTIATION
Emily WhobreyAustraliaAmy Elsner PROPOSAL
Izzy GarufiUnited KingdomOnyama Limba PROPOSAL
Alejandro PerinGermanyOnyama Limba QUALIFIED
Rodrigues CampainAustraliaStephen Shaw RENEWAL
Antonio CaudyArgentinaIoni Bowcher UNQUALIFIED
Octavia MaletIndiaAsiya Javayant NEW
Smith GlickJapanAmy Elsner NEW
Misaki RoysterJapanXuxue Feng PROPOSAL
Ivar PaprockiFranceElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Aruna FigeroaBrazilAsiya Javayant RENEWAL
Isabel BowleyItalyElwin Sharvill UNQUALIFIED
Aruna FigeroaSpainXuxue Feng RENEWAL
Arvin AlbaresArgentinaOnyama Limba NEGOTIATION
Morrow RutaItalyIoni Bowcher RENEWAL
Aditya KuskoGermanyAmy Elsner NEW
Nicolas IturbideBrazilElwin Sharvill QUALIFIED
Adams MorascaItalyAnna Fali RENEWAL
Isabel BowleyFranceElwin Sharvill PROPOSAL
Chavez BriddickCanadaBernardo Dominic NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa DilliardItaly2026-05-24Benton, John B Jr RENEWAL47Ivan Magalhaes
1001Morrow RutaRussia2026-05-22Commercial Press UNQUALIFIED8Onyama Limba
1002Salvatore StockhamJapan2026-05-31Morlong Associates PROPOSAL37Elwin Sharvill
1003Alejandro PerinAustralia2026-06-01Chemel, James L Cpa QUALIFIED63Asiya Javayant
1004Misaki RoysterBrazil2026-05-28Feiner Bros QUALIFIED45Ivan Magalhaes
1005Wickens NestleRussia2026-06-17Morlong Associates QUALIFIED18Bernardo Dominic
1006Greenwood BologniaAustralia2026-06-08Commercial Press RENEWAL56Ioni Bowcher
1007Murillo MaletUnited Kingdom2026-05-22Benton, John B Jr QUALIFIED83Bernardo Dominic
1008Sinclair WaycottBrazil2026-05-26Rousseaux, Michael Esq QUALIFIED23Xuxue Feng
1009Maisha RulapaughGermany2026-06-13Truhlar And Truhlar Attys RENEWAL54Bernardo Dominic
1010Emily WhobreyFrance2026-06-07Morlong Associates NEW6Stephen Shaw
1011Darci PoquetteRussia2026-06-01Chemel, James L Cpa NEW69Anna Fali
1012Silvio SlusarskiArgentina2026-06-04Benton, John B Jr RENEWAL50Stephen Shaw
1013Salvatore StockhamCanada2026-06-08Rousseaux, Michael Esq UNQUALIFIED84Stephen Shaw
1014Julie StensethGermany2026-05-24Printing Dimensions QUALIFIED21Ioni Bowcher
1015Kadeem FlosiArgentina2026-05-30Rousseaux, Michael Esq PROPOSAL46Stephen Shaw
1016Arvin AlbaresItaly2026-06-01Chemel, James L Cpa PROPOSAL76Anna Fali
1017Nicolas IturbideBrazil2026-05-31Morlong Associates NEW93Anna Fali
1018Juan WieserGermany2026-05-21Chapman, Ross E Esq QUALIFIED31Stephen Shaw
1019Jennifer AmigonGermany2026-05-25Feltz Printing Service QUALIFIED60Onyama Limba
1020Francesco ShinkoGermany2026-05-28King, Christopher A Esq RENEWAL21Onyama Limba
1021Kaitlin OstroskyAustralia2026-06-08Chemel, James L Cpa PROPOSAL59Asiya Javayant
1022Izzy GarufiUnited Kingdom2026-06-05Chemel, James L Cpa RENEWAL83Ivan Magalhaes
1023Leja CaldareraGermany2026-06-04Chemel, James L Cpa NEGOTIATION11Xuxue Feng
1024Cody SaylorsSpain2026-06-08Truhlar And Truhlar Attys QUALIFIED2Ioni Bowcher
1025Maria MarrierAustralia2026-06-17Truhlar And Truhlar Attys UNQUALIFIED84Amy Elsner
1026Faith GillianJapan2026-06-14Commercial Press NEW38Onyama Limba
1027Rodrigues CampainGermany2026-06-01Chapman, Ross E Esq NEGOTIATION41Ivan Magalhaes
1028Izzy GarufiArgentina2026-05-27Chemel, James L Cpa NEGOTIATION99Amy Elsner
1029David DarakjySpain2026-06-09Feltz Printing Service PROPOSAL16Ivan Magalhaes
1030Jones VocelkaGermany2026-05-27Feltz Printing Service NEGOTIATION31Anna Fali
1031Aika InouyeArgentina2026-06-03Commercial Press PROPOSAL94Bernardo Dominic
1032Juan WieserFrance2026-06-13Chemel, James L Cpa NEW14Elwin Sharvill
1033Ricardo GauchoSpain2026-05-30Rangoni Of Florence QUALIFIED73Ioni Bowcher
1034David DarakjyJapan2026-06-18Printing Dimensions PROPOSAL76Bernardo Dominic
1035Aruna FigeroaCanada2026-06-05Truhlar And Truhlar Attys UNQUALIFIED36Ivan Magalhaes
1036Aika InouyeFrance2026-06-17Feiner Bros NEW22Anna Fali
1037Rodrigues CampainArgentina2026-06-01Morlong Associates RENEWAL88Asiya Javayant
1038Maria MarrierFrance2026-05-26Chapman, Ross E Esq QUALIFIED46Stephen Shaw
1039Claire TollnerCanada2026-05-30Chanay, Jeffrey A Esq UNQUALIFIED5Elwin Sharvill
1040Costa DilliardIndia2026-06-18Morlong Associates UNQUALIFIED79Asiya Javayant
1041Aruna FigeroaFrance2026-06-03King, Christopher A Esq RENEWAL44Elwin Sharvill
1042Silvio SlusarskiBrazil2026-05-31Dorl, James J Esq PROPOSAL52Bernardo Dominic
1043Jones VocelkaUnited Kingdom2026-05-22Printing Dimensions RENEWAL74Amy Elsner
1044Johnson SergiIndia2026-06-02Printing Dimensions PROPOSAL10Asiya Javayant
1045Claire TollnerIndia2026-05-26Benton, John B Jr UNQUALIFIED8Onyama Limba
1046Jennifer AmigonSpain2026-06-17Truhlar And Truhlar Attys QUALIFIED89Ivan Magalhaes
1047David DarakjySpain2026-06-13Chapman, Ross E Esq PROPOSAL39Bernardo Dominic
1048Leon OldroydGermany2026-06-08Buckley Miller Wright UNQUALIFIED68Stephen Shaw
1049Jeanfrancois VenereBrazil2026-06-18Benton, John B Jr UNQUALIFIED7Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Darci PoquetteBrazilAnna Fali RENEWAL
Izzy GarufiIndiaAnna Fali RENEWAL
Maria MarrierRussiaIvan Magalhaes NEW
Morrow RutaItalyAsiya Javayant QUALIFIED
Octavia MaletSpainAnna Fali RENEWAL
Ricardo GauchoAustraliaStephen Shaw QUALIFIED
Maria MarrierBrazilStephen Shaw QUALIFIED
Greenwood BologniaBrazilStephen Shaw NEGOTIATION
Munro FerenczSpainBernardo Dominic UNQUALIFIED
James ButtBrazilBernardo Dominic NEW
Ricardo GauchoAustraliaIoni Bowcher PROPOSAL
Jennifer AmigonFranceAnna Fali NEW
Julie StensethRussiaOnyama Limba RENEWAL
Clifford RimItalyIoni Bowcher RENEWAL
Morrow RutaIndiaElwin Sharvill RENEWAL
Smith GlickArgentinaOnyama Limba UNQUALIFIED
Antonio CaudyFranceIvan Magalhaes NEW
Ashley DoeRussiaAsiya Javayant QUALIFIED
Silvio SlusarskiItalyAsiya Javayant RENEWAL
Juan WieserItalyIoni Bowcher NEW
Jennifer AmigonSpainAsiya Javayant PROPOSAL
Morrow RutaJapanBernardo Dominic RENEWAL
Jones VocelkaAustraliaIoni Bowcher UNQUALIFIED
Cody SaylorsGermanyStephen Shaw NEW
James ButtJapanIoni Bowcher RENEWAL
Salvatore StockhamIndiaAsiya Javayant NEW
Isabel BowleyBrazilAsiya Javayant PROPOSAL
Cody SaylorsGermanyAnna Fali NEGOTIATION
Deepesh ChuiAustraliaIoni Bowcher PROPOSAL
Izzy GarufiFranceOnyama Limba NEW
Julie StensethCanadaElwin Sharvill PROPOSAL
Tony FollerAustraliaOnyama Limba PROPOSAL
James ButtIndiaIvan Magalhaes NEGOTIATION
Munro FerenczBrazilBernardo Dominic RENEWAL
Jefferson SchemmerArgentinaElwin Sharvill PROPOSAL
Jennifer AmigonSpainAnna Fali UNQUALIFIED
James ButtGermanyIoni Bowcher RENEWAL
Clifford RimItalyXuxue Feng PROPOSAL
Nicolas IturbideGermanyIvan Magalhaes QUALIFIED
Alejandro PerinItalyAsiya Javayant NEW
Octavia MaletItalyAnna Fali PROPOSAL
Ivar PaprockiSpainAnna Fali NEW
Isabel BowleySpainIoni Bowcher NEGOTIATION
Jennifer AmigonArgentinaBernardo Dominic NEGOTIATION
Misaki RoysterRussiaOnyama Limba NEW
Alejandro PerinCanadaAsiya Javayant RENEWAL
Chavez BriddickItalyAnna Fali PROPOSAL
Ricardo GauchoJapanOnyama Limba NEW
Ashley DoeRussiaOnyama Limba RENEWAL
Aruna FigeroaRussiaStephen Shaw QUALIFIED
Frozen Columns
Name
Deepesh Chui
Rodrigues Campain
Aditya Kusko
Claire Tollner
Izzy Garufi
Aditya Kusko
Octavia Malet
Rodrigues Campain
Sinclair Waycott
Ashley Doe
Izzy Garufi
Smith Glick
Jefferson Schemmer
Jefferson Schemmer
Octavia Malet
Leja Caldarera
Clifford Rim
Jeanfrancois Venere
Misaki Royster
Ivar Paprocki
Francesco Shinko
Jennifer Amigon
Munro Ferencz
David Darakjy
Smith Glick
Jefferson Schemmer
Misaki Royster
Deepesh Chui
Julie Stenseth
Leja Caldarera
Julie Stenseth
Aika Inouye
Juan Wieser
Mayumi Kolmetz
Sinclair Waycott
Jennifer Amigon
Mayumi Kolmetz
Costa Dilliard
Izzy Garufi
Jefferson Schemmer
Johnson Sergi
Faith Gillian
Jeanfrancois Venere
Emily Whobrey
Adams Morasca
Wickens Nestle
Johnson Sergi
Mayumi Kolmetz
Aika Inouye
Maria Marrier
IdCountryDate
1000Russia2026-05-27
1001India2026-06-07
1002Italy2026-06-11
1003Spain2026-05-25
1004Italy2026-05-27
1005Canada2026-05-24
1006Brazil2026-06-12
1007Italy2026-05-30
1008United Kingdom2026-06-19
1009Russia2026-05-28
1010Italy2026-06-09
1011France2026-05-31
1012Spain2026-06-16
1013Australia2026-05-22
1014Japan2026-05-29
1015Italy2026-06-06
1016Spain2026-06-09
1017Germany2026-06-07
1018France2026-05-28
1019Italy2026-06-19
1020Spain2026-05-30
1021Brazil2026-06-16
1022Brazil2026-06-04
1023France2026-06-03
1024Russia2026-06-10
1025Japan2026-05-31
1026Australia2026-06-04
1027Australia2026-05-29
1028United Kingdom2026-05-25
1029Argentina2026-06-19
1030India2026-06-01
1031Canada2026-06-12
1032Spain2026-05-31
1033Australia2026-05-31
1034Canada2026-05-30
1035Spain2026-05-22
1036Canada2026-06-11
1037Canada2026-06-03
1038Japan2026-05-25
1039Canada2026-05-25
1040Canada2026-06-13
1041India2026-05-26
1042Brazil2026-06-19
1043Brazil2026-06-12
1044Russia2026-05-21
1045Argentina2026-06-03
1046India2026-06-19
1047United Kingdom2026-06-07
1048Japan2026-06-18
1049Brazil2026-06-01

On-Demand Data

NameIdCountryDate
Jennifer Amigon1000Russia2026-06-11
Kaitlin Ostrosky1001Japan2026-05-27
Claire Tollner1002Russia2026-05-28
David Darakjy1003Australia2026-05-29
Aika Inouye1004India2026-06-12
Murillo Malet1005Argentina2026-06-03
Tony Foller1006Australia2026-06-03
Juan Wieser1007India2026-06-17
Octavia Malet1008France2026-06-12
Kadeem Flosi1009Australia2026-05-27
David Darakjy1010France2026-05-27
Jefferson Schemmer1011India2026-06-17
Deepesh Chui1012India2026-05-22
Sinclair Waycott1013Russia2026-05-21
Smith Glick1014Japan2026-06-09
Ricardo Gaucho1015Russia2026-06-05
Leja Caldarera1016Germany2026-06-08
James Butt1017Russia2026-06-03
Clifford Rim1018United Kingdom2026-06-09
Ricardo Gaucho1019France2026-05-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Greenwood BologniaGermanyOnyama Limba RENEWAL
Morrow RutaItalyOnyama Limba NEW
Leon OldroydArgentinaElwin Sharvill RENEWAL
Alejandro PerinRussiaStephen Shaw NEGOTIATION
Adams MorascaSpainXuxue Feng QUALIFIED
Maria MarrierArgentinaIvan Magalhaes RENEWAL
Cody SaylorsArgentinaAmy Elsner QUALIFIED
James ButtJapanIvan Magalhaes RENEWAL
James ButtSpainOnyama Limba UNQUALIFIED
Aditya KuskoSpainElwin Sharvill RENEWAL
James ButtSpainIoni Bowcher NEW
David DarakjyArgentinaIoni Bowcher QUALIFIED
Antonio CaudyItalyAsiya Javayant QUALIFIED
Mujtaba NickaJapanIvan Magalhaes PROPOSAL
Leja CaldareraSpainAmy Elsner NEW
Munro FerenczJapanAsiya Javayant UNQUALIFIED
Deepesh ChuiCanadaXuxue Feng RENEWAL
Maria MarrierSpainAmy Elsner PROPOSAL
Maria MarrierRussiaAnna Fali RENEWAL
Faith GillianCanadaAnna Fali QUALIFIED
Alejandro PerinArgentinaIvan Magalhaes UNQUALIFIED
Jefferson SchemmerItalyIoni Bowcher PROPOSAL
Greenwood BologniaFranceAnna Fali UNQUALIFIED
Mayumi KolmetzJapanIvan Magalhaes UNQUALIFIED
Rodrigues CampainBrazilAmy Elsner PROPOSAL
Jefferson SchemmerRussiaXuxue Feng RENEWAL
Julie StensethRussiaOnyama Limba QUALIFIED
Jennifer AmigonFranceAsiya Javayant NEW
Aruna FigeroaUnited KingdomAsiya Javayant NEW
Jones VocelkaJapanElwin Sharvill UNQUALIFIED
Nicolas IturbideBrazilAsiya Javayant QUALIFIED
Silvio SlusarskiJapanBernardo Dominic RENEWAL
Octavia MaletFranceIvan Magalhaes RENEWAL
Clifford RimJapanXuxue Feng PROPOSAL
Jefferson SchemmerBrazilXuxue Feng QUALIFIED
Wickens NestleSpainIoni Bowcher QUALIFIED
Aruna FigeroaAustraliaAmy Elsner UNQUALIFIED
Clifford RimUnited KingdomAsiya Javayant QUALIFIED
Johnson SergiIndiaXuxue Feng NEGOTIATION
Deepesh ChuiCanadaStephen Shaw NEGOTIATION

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