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
Murillo MaletCanadaAsiya Javayant NEGOTIATION
James ButtCanadaAmy Elsner RENEWAL
Antonio CaudyFranceStephen Shaw NEGOTIATION
Jefferson SchemmerFranceStephen Shaw NEGOTIATION
Smith GlickGermanyAmy Elsner QUALIFIED
Tony FollerFranceOnyama Limba NEW
Emily WhobreyIndiaOnyama Limba NEGOTIATION
Salvatore StockhamUnited KingdomOnyama Limba RENEWAL
Morrow RutaJapanIvan Magalhaes UNQUALIFIED
David DarakjyAustraliaIoni Bowcher PROPOSAL
Antonio CaudyCanadaXuxue Feng UNQUALIFIED
Francesco ShinkoGermanyOnyama Limba UNQUALIFIED
Chavez BriddickFranceOnyama Limba NEW
Rodrigues CampainCanadaStephen Shaw UNQUALIFIED
Arvin AlbaresSpainStephen Shaw QUALIFIED
Chavez BriddickJapanStephen Shaw NEW
Juan WieserIndiaBernardo Dominic QUALIFIED
Mujtaba NickaBrazilIvan Magalhaes QUALIFIED
Murillo MaletJapanAnna Fali PROPOSAL
Rodrigues CampainJapanIoni Bowcher NEW
David DarakjyAustraliaAsiya Javayant RENEWAL
Stacey MacleadIndiaOnyama Limba RENEWAL
Ricardo GauchoSpainAsiya Javayant UNQUALIFIED
Jennifer AmigonGermanyOnyama Limba NEGOTIATION
Silvio SlusarskiCanadaElwin Sharvill UNQUALIFIED
Salvatore StockhamSpainElwin Sharvill PROPOSAL
Clifford RimJapanAnna Fali PROPOSAL
Jennifer AmigonGermanyAmy Elsner PROPOSAL
Morrow RutaBrazilAmy Elsner QUALIFIED
Ricardo GauchoUnited KingdomBernardo Dominic QUALIFIED
Antonio CaudyUnited KingdomElwin Sharvill UNQUALIFIED
Jones VocelkaBrazilIoni Bowcher NEGOTIATION
Costa DilliardJapanIoni Bowcher QUALIFIED
Maisha RulapaughGermanyIvan Magalhaes RENEWAL
Jeanfrancois VenereArgentinaBernardo Dominic RENEWAL
Murillo MaletFranceBernardo Dominic PROPOSAL
Juan WieserItalyAmy Elsner PROPOSAL
Costa DilliardRussiaBernardo Dominic RENEWAL
Morrow RutaGermanyStephen Shaw RENEWAL
Johnson SergiFranceAnna Fali RENEWAL
Arvin AlbaresBrazilAnna Fali NEW
Ricardo GauchoArgentinaAnna Fali PROPOSAL
Ivar PaprockiArgentinaAsiya Javayant NEW
Adams MorascaFranceOnyama Limba UNQUALIFIED
Maisha RulapaughGermanyAnna Fali QUALIFIED
Wickens NestleSpainElwin Sharvill UNQUALIFIED
Francesco ShinkoBrazilIvan Magalhaes RENEWAL
Arvin AlbaresSpainElwin Sharvill UNQUALIFIED
Julie StensethBrazilOnyama Limba RENEWAL
Maisha RulapaughArgentinaAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Greenwood BologniaItalyAmy Elsner NEW
Leon OldroydAustraliaIoni Bowcher NEW
Clifford RimAustraliaAmy Elsner UNQUALIFIED
Jones VocelkaArgentinaIoni Bowcher PROPOSAL
Adams MorascaUnited KingdomElwin Sharvill NEW
Faith GillianFranceAmy Elsner PROPOSAL
Morrow RutaCanadaOnyama Limba RENEWAL
Stacey MacleadIndiaIoni Bowcher PROPOSAL
Aika InouyeJapanAmy Elsner PROPOSAL
Rodrigues CampainItalyIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mayumi KolmetzAustralia2026-05-14Rousseaux, Michael Esq NEGOTIATION99Asiya Javayant
1001Chavez BriddickAustralia2026-05-28Chapman, Ross E Esq RENEWAL75Bernardo Dominic
1002Octavia MaletArgentina2026-05-31Feltz Printing Service QUALIFIED48Amy Elsner
1003Salvatore StockhamAustralia2026-05-12Benton, John B Jr PROPOSAL33Amy Elsner
1004Johnson SergiJapan2026-05-31Buckley Miller Wright PROPOSAL23Onyama Limba
1005Murillo MaletItaly2026-05-23Morlong Associates NEGOTIATION34Anna Fali
1006Izzy GarufiJapan2026-05-14Feltz Printing Service QUALIFIED49Ioni Bowcher
1007Faith GillianIndia2026-05-10Chemel, James L Cpa UNQUALIFIED34Ivan Magalhaes
1008Mujtaba NickaItaly2026-05-12Feiner Bros PROPOSAL73Ioni Bowcher
1009Cody SaylorsFrance2026-05-22Rousseaux, Michael Esq QUALIFIED78Ioni Bowcher
1010Morrow RutaIndia2026-05-27Chapman, Ross E Esq PROPOSAL14Anna Fali
1011Izzy GarufiItaly2026-05-09Chemel, James L Cpa RENEWAL93Stephen Shaw
1012Leja CaldareraGermany2026-05-09Benton, John B Jr NEW62Onyama Limba
1013Johnson SergiJapan2026-05-14Feltz Printing Service RENEWAL98Elwin Sharvill
1014Morrow RutaUnited Kingdom2026-05-21Buckley Miller Wright RENEWAL28Xuxue Feng
1015David DarakjyUnited Kingdom2026-05-07Truhlar And Truhlar Attys NEW86Bernardo Dominic
1016Rodrigues CampainSpain2026-05-05Truhlar And Truhlar Attys QUALIFIED0Ivan Magalhaes
1017Silvio SlusarskiSpain2026-05-15King, Christopher A Esq PROPOSAL68Asiya Javayant
1018Mujtaba NickaUnited Kingdom2026-05-09Buckley Miller Wright UNQUALIFIED90Stephen Shaw
1019Chavez BriddickFrance2026-05-15Truhlar And Truhlar Attys NEGOTIATION40Ivan Magalhaes
1020Ivar PaprockiArgentina2026-05-14Dorl, James J Esq PROPOSAL5Ivan Magalhaes
1021Ivar PaprockiGermany2026-05-19Feltz Printing Service NEGOTIATION81Bernardo Dominic
1022Arvin AlbaresSpain2026-05-26Commercial Press QUALIFIED19Elwin Sharvill
1023Aika InouyeGermany2026-05-31Buckley Miller Wright NEW14Onyama Limba
1024Faith GillianBrazil2026-05-29King, Christopher A Esq NEGOTIATION39Elwin Sharvill
1025Darci PoquetteSpain2026-05-23Rangoni Of Florence NEW9Ioni Bowcher
1026Maisha RulapaughIndia2026-06-03Morlong Associates UNQUALIFIED25Ivan Magalhaes
1027Julie StensethJapan2026-05-09Printing Dimensions NEGOTIATION0Asiya Javayant
1028Misaki RoysterJapan2026-05-31Dorl, James J Esq RENEWAL8Elwin Sharvill
1029Jeanfrancois VenereFrance2026-05-05Chapman, Ross E Esq PROPOSAL95Stephen Shaw
1030Cody SaylorsIndia2026-05-07Benton, John B Jr NEW53Amy Elsner
1031Greenwood BologniaFrance2026-05-22Dorl, James J Esq UNQUALIFIED78Anna Fali
1032Adams MorascaRussia2026-05-13Commercial Press NEW16Elwin Sharvill
1033Greenwood BologniaSpain2026-05-21Feltz Printing Service RENEWAL78Amy Elsner
1034Misaki RoysterRussia2026-06-02King, Christopher A Esq NEW15Elwin Sharvill
1035James ButtJapan2026-05-20King, Christopher A Esq PROPOSAL50Onyama Limba
1036Deepesh ChuiIndia2026-05-31Buckley Miller Wright RENEWAL87Bernardo Dominic
1037Isabel BowleyFrance2026-05-28King, Christopher A Esq UNQUALIFIED68Amy Elsner
1038Mayumi KolmetzUnited Kingdom2026-05-26Chemel, James L Cpa RENEWAL81Xuxue Feng
1039Izzy GarufiRussia2026-05-27Dorl, James J Esq NEW52Bernardo Dominic
1040Ricardo GauchoSpain2026-05-13Feiner Bros NEW50Elwin Sharvill
1041Deepesh ChuiIndia2026-05-06Dorl, James J Esq QUALIFIED21Onyama Limba
1042Aruna FigeroaRussia2026-05-30King, Christopher A Esq QUALIFIED48Ivan Magalhaes
1043Julie StensethItaly2026-05-08Chanay, Jeffrey A Esq RENEWAL28Onyama Limba
1044Cody SaylorsCanada2026-05-24Morlong Associates RENEWAL73Asiya Javayant
1045David DarakjyRussia2026-05-10Morlong Associates NEW66Anna Fali
1046Misaki RoysterCanada2026-06-03Morlong Associates UNQUALIFIED52Elwin Sharvill
1047Aika InouyeFrance2026-05-06Commercial Press UNQUALIFIED20Ioni Bowcher
1048Jennifer AmigonSpain2026-05-17Buckley Miller Wright NEW57Ioni Bowcher
1049Misaki RoysterArgentina2026-05-18Benton, John B Jr UNQUALIFIED64Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
James ButtArgentinaIoni Bowcher RENEWAL
Rodrigues CampainIndiaOnyama Limba NEW
David DarakjyBrazilIvan Magalhaes RENEWAL
Deepesh ChuiBrazilStephen Shaw QUALIFIED
Ivar PaprockiIndiaAmy Elsner NEGOTIATION
David DarakjyRussiaAsiya Javayant NEW
Mujtaba NickaFranceIvan Magalhaes RENEWAL
Ivar PaprockiUnited KingdomIoni Bowcher QUALIFIED
Aditya KuskoFranceAsiya Javayant PROPOSAL
Deepesh ChuiBrazilElwin Sharvill NEW
Kaitlin OstroskyGermanyXuxue Feng NEW
Rodrigues CampainFranceAnna Fali NEW
Aika InouyeAustraliaIvan Magalhaes UNQUALIFIED
Misaki RoysterArgentinaBernardo Dominic QUALIFIED
Chavez BriddickUnited KingdomAnna Fali QUALIFIED
Ashley DoeCanadaStephen Shaw QUALIFIED
Wickens NestleItalyStephen Shaw UNQUALIFIED
Isabel BowleyArgentinaAnna Fali RENEWAL
Adams MorascaBrazilOnyama Limba UNQUALIFIED
Darci PoquetteJapanAmy Elsner PROPOSAL
Juan WieserSpainOnyama Limba PROPOSAL
David DarakjyCanadaOnyama Limba UNQUALIFIED
Johnson SergiAustraliaAmy Elsner RENEWAL
Smith GlickItalyAmy Elsner NEGOTIATION
Ashley DoeRussiaXuxue Feng PROPOSAL
Jones VocelkaRussiaIoni Bowcher QUALIFIED
Julie StensethCanadaIoni Bowcher NEGOTIATION
Julie StensethCanadaXuxue Feng NEW
Ricardo GauchoFranceIvan Magalhaes UNQUALIFIED
Darci PoquetteRussiaAnna Fali NEGOTIATION
Clifford RimBrazilStephen Shaw UNQUALIFIED
Aruna FigeroaFranceStephen Shaw NEGOTIATION
Nicolas IturbideGermanyIvan Magalhaes PROPOSAL
Stacey MacleadArgentinaBernardo Dominic PROPOSAL
Misaki RoysterItalyAmy Elsner RENEWAL
Leon OldroydRussiaOnyama Limba NEGOTIATION
Murillo MaletUnited KingdomOnyama Limba NEW
James ButtBrazilElwin Sharvill RENEWAL
Claire TollnerArgentinaBernardo Dominic PROPOSAL
Octavia MaletFranceAmy Elsner NEGOTIATION
Ivar PaprockiRussiaElwin Sharvill RENEWAL
Salvatore StockhamCanadaXuxue Feng NEGOTIATION
Sinclair WaycottGermanyAnna Fali NEGOTIATION
Jefferson SchemmerUnited KingdomElwin Sharvill PROPOSAL
Murillo MaletJapanAnna Fali NEW
Darci PoquetteJapanIvan Magalhaes QUALIFIED
Salvatore StockhamBrazilBernardo Dominic PROPOSAL
Julie StensethAustraliaAsiya Javayant UNQUALIFIED
Izzy GarufiAustraliaBernardo Dominic RENEWAL
Maria MarrierSpainStephen Shaw PROPOSAL
Frozen Columns
Name
Morrow Ruta
Faith Gillian
Morrow Ruta
Smith Glick
Ivar Paprocki
Jennifer Amigon
Wickens Nestle
Silvio Slusarski
Sinclair Waycott
Arvin Albares
Claire Tollner
Misaki Royster
Ashley Doe
Alejandro Perin
Adams Morasca
Francesco Shinko
Leon Oldroyd
Greenwood Bolognia
Costa Dilliard
Chavez Briddick
Wickens Nestle
Stacey Maclead
Maisha Rulapaugh
Kadeem Flosi
Costa Dilliard
Aika Inouye
Kadeem Flosi
James Butt
Johnson Sergi
Leja Caldarera
Maisha Rulapaugh
Jennifer Amigon
Murillo Malet
Arvin Albares
Aruna Figeroa
Sinclair Waycott
Alejandro Perin
Chavez Briddick
Octavia Malet
Octavia Malet
Izzy Garufi
Jefferson Schemmer
Aditya Kusko
Kadeem Flosi
Misaki Royster
Leon Oldroyd
Aruna Figeroa
Johnson Sergi
Wickens Nestle
Juan Wieser
IdCountryDate
1000India2026-05-15
1001Argentina2026-06-02
1002France2026-05-30
1003France2026-06-01
1004India2026-05-06
1005Australia2026-05-28
1006Spain2026-05-30
1007Japan2026-05-31
1008France2026-05-23
1009Germany2026-06-03
1010Japan2026-05-23
1011Italy2026-05-20
1012Spain2026-05-22
1013Canada2026-05-27
1014Germany2026-05-15
1015Australia2026-05-28
1016Japan2026-05-26
1017Australia2026-06-02
1018Germany2026-05-22
1019Canada2026-05-06
1020Russia2026-05-31
1021Spain2026-05-24
1022Brazil2026-05-07
1023France2026-05-28
1024Australia2026-05-24
1025Canada2026-05-13
1026Italy2026-05-19
1027Japan2026-05-16
1028Japan2026-05-21
1029Canada2026-05-07
1030France2026-05-17
1031Japan2026-05-13
1032Germany2026-06-02
1033Italy2026-05-15
1034Australia2026-05-20
1035Brazil2026-05-22
1036India2026-05-06
1037Brazil2026-06-03
1038Japan2026-05-11
1039Brazil2026-05-12
1040Argentina2026-05-29
1041Argentina2026-05-22
1042Argentina2026-05-14
1043Japan2026-05-20
1044Italy2026-06-03
1045Italy2026-05-16
1046Germany2026-05-13
1047Canada2026-05-09
1048France2026-05-24
1049Italy2026-05-06

On-Demand Data

NameIdCountryDate
Costa Dilliard1000Argentina2026-05-21
Misaki Royster1001Russia2026-06-03
Misaki Royster1002Brazil2026-05-19
Izzy Garufi1003Germany2026-05-24
Munro Ferencz1004Canada2026-05-26
James Butt1005India2026-05-18
Rodrigues Campain1006Spain2026-06-01
Jeanfrancois Venere1007Argentina2026-05-30
Claire Tollner1008Russia2026-05-06
Ricardo Gaucho1009Russia2026-05-14
Faith Gillian1010Germany2026-05-16
Murillo Malet1011Germany2026-05-08
Faith Gillian1012Australia2026-05-30
Tony Foller1013Italy2026-05-31
Jeanfrancois Venere1014Brazil2026-05-14
Smith Glick1015Italy2026-05-16
Adams Morasca1016Argentina2026-05-22
Kaitlin Ostrosky1017India2026-05-07
Morrow Ruta1018India2026-06-01
Munro Ferencz1019Canada2026-05-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan WieserCanadaAnna Fali PROPOSAL
Greenwood BologniaSpainAsiya Javayant UNQUALIFIED
Deepesh ChuiRussiaAsiya Javayant NEW
Faith GillianJapanAnna Fali UNQUALIFIED
Tony FollerIndiaOnyama Limba NEGOTIATION
Silvio SlusarskiJapanIoni Bowcher UNQUALIFIED
Leja CaldareraGermanyElwin Sharvill QUALIFIED
Antonio CaudyUnited KingdomElwin Sharvill QUALIFIED
Darci PoquetteItalyElwin Sharvill NEW
Nicolas IturbideGermanyBernardo Dominic RENEWAL
Emily WhobreySpainXuxue Feng RENEWAL
Chavez BriddickRussiaStephen Shaw NEW
Greenwood BologniaGermanyAmy Elsner UNQUALIFIED
Isabel BowleyIndiaElwin Sharvill RENEWAL
Maria MarrierItalyElwin Sharvill QUALIFIED
Aruna FigeroaArgentinaIoni Bowcher RENEWAL
Alejandro PerinSpainIvan Magalhaes NEW
Wickens NestleFranceXuxue Feng UNQUALIFIED
Leja CaldareraJapanAnna Fali QUALIFIED
Aruna FigeroaCanadaIvan Magalhaes UNQUALIFIED
Sinclair WaycottArgentinaIvan Magalhaes NEW
Isabel BowleyArgentinaBernardo Dominic NEW
Jeanfrancois VenereSpainIvan Magalhaes NEW
Octavia MaletFranceBernardo Dominic NEW
Clifford RimSpainIvan Magalhaes RENEWAL
Salvatore StockhamFranceIoni Bowcher QUALIFIED
Darci PoquetteCanadaIoni Bowcher RENEWAL
Tony FollerArgentinaOnyama Limba UNQUALIFIED
Salvatore StockhamUnited KingdomIoni Bowcher NEW
Sinclair WaycottCanadaAsiya Javayant QUALIFIED
Clifford RimFranceStephen Shaw NEGOTIATION
Johnson SergiArgentinaAmy Elsner PROPOSAL
David DarakjyAustraliaAmy Elsner QUALIFIED
Sinclair WaycottFranceStephen Shaw NEW
Isabel BowleyFranceXuxue Feng RENEWAL
Maisha RulapaughItalyOnyama Limba NEW
Clifford RimSpainAmy Elsner NEW
Murillo MaletRussiaStephen Shaw UNQUALIFIED
Deepesh ChuiCanadaAnna Fali QUALIFIED
Mayumi KolmetzRussiaElwin 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>