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
Ricardo GauchoArgentinaStephen Shaw QUALIFIED
Leja CaldareraFranceAmy Elsner UNQUALIFIED
Silvio SlusarskiGermanyBernardo Dominic NEW
Ivar PaprockiCanadaIoni Bowcher UNQUALIFIED
Jeanfrancois VenereBrazilIvan Magalhaes QUALIFIED
Ivar PaprockiItalyOnyama Limba PROPOSAL
Jennifer AmigonRussiaIoni Bowcher RENEWAL
Smith GlickCanadaAsiya Javayant QUALIFIED
Ivar PaprockiSpainOnyama Limba PROPOSAL
Octavia MaletRussiaXuxue Feng PROPOSAL
Juan WieserArgentinaIvan Magalhaes NEGOTIATION
Ricardo GauchoCanadaBernardo Dominic NEGOTIATION
Silvio SlusarskiFranceXuxue Feng QUALIFIED
Izzy GarufiJapanElwin Sharvill QUALIFIED
Mujtaba NickaBrazilAsiya Javayant UNQUALIFIED
Murillo MaletJapanAnna Fali NEW
Jennifer AmigonGermanyXuxue Feng NEGOTIATION
Leon OldroydAustraliaStephen Shaw PROPOSAL
Antonio CaudyFranceAmy Elsner PROPOSAL
Morrow RutaGermanyAmy Elsner QUALIFIED
Aika InouyeSpainAsiya Javayant PROPOSAL
Deepesh ChuiAustraliaAsiya Javayant QUALIFIED
Antonio CaudyUnited KingdomAmy Elsner UNQUALIFIED
Morrow RutaItalyAsiya Javayant NEW
Kadeem FlosiRussiaIoni Bowcher NEW
Rodrigues CampainCanadaXuxue Feng NEGOTIATION
Antonio CaudyCanadaAnna Fali PROPOSAL
Clifford RimItalyOnyama Limba NEGOTIATION
Nicolas IturbideGermanyAnna Fali PROPOSAL
Faith GillianGermanyIoni Bowcher NEW
Julie StensethAustraliaStephen Shaw QUALIFIED
Cody SaylorsRussiaIvan Magalhaes PROPOSAL
Murillo MaletJapanAsiya Javayant NEW
Adams MorascaUnited KingdomElwin Sharvill PROPOSAL
Wickens NestleRussiaXuxue Feng NEW
Tony FollerSpainOnyama Limba NEW
Misaki RoysterUnited KingdomIoni Bowcher QUALIFIED
Jefferson SchemmerSpainXuxue Feng PROPOSAL
Claire TollnerIndiaBernardo Dominic RENEWAL
Alejandro PerinItalyAnna Fali NEW
Johnson SergiItalyBernardo Dominic UNQUALIFIED
Morrow RutaSpainOnyama Limba NEGOTIATION
Kadeem FlosiCanadaAsiya Javayant UNQUALIFIED
Cody SaylorsGermanyElwin Sharvill QUALIFIED
Ashley DoeBrazilIvan Magalhaes NEGOTIATION
Morrow RutaAustraliaAnna Fali QUALIFIED
Aruna FigeroaSpainStephen Shaw RENEWAL
Octavia MaletFranceStephen Shaw NEGOTIATION
Smith GlickFranceElwin Sharvill UNQUALIFIED
Wickens NestleSpainStephen Shaw RENEWAL
Horizontal
NameCountryRepresentativeStatus
Stacey MacleadFranceIoni Bowcher NEW
Faith GillianBrazilXuxue Feng NEGOTIATION
Francesco ShinkoIndiaIoni Bowcher PROPOSAL
Ashley DoeRussiaXuxue Feng RENEWAL
Ivar PaprockiGermanyElwin Sharvill QUALIFIED
Silvio SlusarskiUnited KingdomOnyama Limba RENEWAL
Antonio CaudyRussiaIvan Magalhaes QUALIFIED
Morrow RutaIndiaStephen Shaw NEW
Alejandro PerinUnited KingdomStephen Shaw PROPOSAL
Kaitlin OstroskyItalyAmy Elsner RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja CaldareraGermany2026-05-07Rangoni Of Florence PROPOSAL10Stephen Shaw
1001Smith GlickRussia2026-05-10Rangoni Of Florence NEGOTIATION55Onyama Limba
1002Salvatore StockhamItaly2026-05-30Chanay, Jeffrey A Esq PROPOSAL55Amy Elsner
1003Francesco ShinkoIndia2026-05-31Feiner Bros UNQUALIFIED47Ivan Magalhaes
1004Salvatore StockhamSpain2026-06-04Morlong Associates PROPOSAL12Stephen Shaw
1005David DarakjyItaly2026-05-13King, Christopher A Esq UNQUALIFIED39Amy Elsner
1006Jones VocelkaAustralia2026-05-14King, Christopher A Esq NEW26Xuxue Feng
1007Sinclair WaycottRussia2026-05-27Truhlar And Truhlar Attys QUALIFIED29Stephen Shaw
1008Kaitlin OstroskyItaly2026-06-04Commercial Press UNQUALIFIED70Stephen Shaw
1009Chavez BriddickAustralia2026-06-02Commercial Press RENEWAL87Amy Elsner
1010Johnson SergiArgentina2026-05-24Printing Dimensions UNQUALIFIED84Bernardo Dominic
1011Wickens NestleRussia2026-05-24Benton, John B Jr NEGOTIATION28Stephen Shaw
1012Alejandro PerinJapan2026-05-17Chapman, Ross E Esq UNQUALIFIED25Ivan Magalhaes
1013Leja CaldareraRussia2026-05-21Truhlar And Truhlar Attys NEW53Xuxue Feng
1014Ivar PaprockiSpain2026-05-08King, Christopher A Esq NEGOTIATION35Amy Elsner
1015Darci PoquetteItaly2026-05-08Benton, John B Jr UNQUALIFIED80Bernardo Dominic
1016Munro FerenczSpain2026-05-25Printing Dimensions RENEWAL98Ivan Magalhaes
1017Greenwood BologniaSpain2026-06-02Dorl, James J Esq RENEWAL38Ivan Magalhaes
1018Jeanfrancois VenereGermany2026-05-07Rangoni Of Florence RENEWAL90Amy Elsner
1019Jeanfrancois VenereArgentina2026-05-29Dorl, James J Esq PROPOSAL24Bernardo Dominic
1020Faith GillianGermany2026-05-18Buckley Miller Wright UNQUALIFIED58Xuxue Feng
1021Smith GlickBrazil2026-05-26Chapman, Ross E Esq PROPOSAL90Ioni Bowcher
1022Morrow RutaFrance2026-05-26Feltz Printing Service RENEWAL31Xuxue Feng
1023Rodrigues CampainBrazil2026-06-01Printing Dimensions PROPOSAL82Ivan Magalhaes
1024Francesco ShinkoGermany2026-05-28Buckley Miller Wright NEW53Amy Elsner
1025David DarakjyFrance2026-05-21King, Christopher A Esq RENEWAL62Bernardo Dominic
1026Faith GillianIndia2026-05-29Truhlar And Truhlar Attys RENEWAL35Amy Elsner
1027Kaitlin OstroskyAustralia2026-05-21Feltz Printing Service NEGOTIATION48Anna Fali
1028Claire TollnerAustralia2026-05-11Rousseaux, Michael Esq UNQUALIFIED37Bernardo Dominic
1029Isabel BowleyUnited Kingdom2026-06-05Chanay, Jeffrey A Esq RENEWAL22Bernardo Dominic
1030Maria MarrierCanada2026-05-08Buckley Miller Wright UNQUALIFIED6Onyama Limba
1031Octavia MaletCanada2026-05-07Buckley Miller Wright NEGOTIATION44Stephen Shaw
1032Leon OldroydUnited Kingdom2026-05-16Printing Dimensions PROPOSAL52Anna Fali
1033Tony FollerCanada2026-05-16Chemel, James L Cpa UNQUALIFIED74Asiya Javayant
1034Cody SaylorsFrance2026-05-16Rousseaux, Michael Esq QUALIFIED37Xuxue Feng
1035Sinclair WaycottArgentina2026-06-01Buckley Miller Wright RENEWAL65Elwin Sharvill
1036Ivar PaprockiSpain2026-05-09Feltz Printing Service UNQUALIFIED60Asiya Javayant
1037Cody SaylorsAustralia2026-05-19Chanay, Jeffrey A Esq NEW60Onyama Limba
1038Faith GillianBrazil2026-05-29King, Christopher A Esq QUALIFIED99Elwin Sharvill
1039David DarakjyIndia2026-05-11Morlong Associates UNQUALIFIED72Ivan Magalhaes
1040Sinclair WaycottRussia2026-05-20Dorl, James J Esq UNQUALIFIED43Ivan Magalhaes
1041Juan WieserJapan2026-05-27Chapman, Ross E Esq RENEWAL18Ioni Bowcher
1042Arvin AlbaresItaly2026-05-25Truhlar And Truhlar Attys PROPOSAL42Amy Elsner
1043Arvin AlbaresArgentina2026-05-27Commercial Press RENEWAL62Ivan Magalhaes
1044David DarakjyBrazil2026-05-26Morlong Associates PROPOSAL40Stephen Shaw
1045Deepesh ChuiCanada2026-05-24King, Christopher A Esq NEW57Onyama Limba
1046Alejandro PerinCanada2026-05-09Printing Dimensions RENEWAL19Elwin Sharvill
1047Nicolas IturbideAustralia2026-05-16Rangoni Of Florence RENEWAL62Onyama Limba
1048Maria MarrierRussia2026-05-19Truhlar And Truhlar Attys PROPOSAL28Amy Elsner
1049Ricardo GauchoArgentina2026-05-07Feiner Bros PROPOSAL46Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Wickens NestleGermanyIvan Magalhaes NEW
Mayumi KolmetzGermanyBernardo Dominic NEGOTIATION
Murillo MaletRussiaXuxue Feng NEW
David DarakjyArgentinaIvan Magalhaes QUALIFIED
Ashley DoeArgentinaBernardo Dominic RENEWAL
Morrow RutaAustraliaXuxue Feng NEGOTIATION
Kaitlin OstroskyItalyAmy Elsner NEW
Deepesh ChuiItalyAnna Fali QUALIFIED
Emily WhobreySpainAmy Elsner UNQUALIFIED
Faith GillianJapanAnna Fali UNQUALIFIED
Deepesh ChuiArgentinaAnna Fali RENEWAL
Sinclair WaycottFranceStephen Shaw RENEWAL
Kaitlin OstroskyArgentinaBernardo Dominic NEW
Tony FollerItalyBernardo Dominic NEGOTIATION
Leja CaldareraCanadaXuxue Feng RENEWAL
Adams MorascaAustraliaAsiya Javayant UNQUALIFIED
Deepesh ChuiAustraliaElwin Sharvill NEGOTIATION
Emily WhobreyIndiaAnna Fali NEW
Jeanfrancois VenereFranceOnyama Limba UNQUALIFIED
Mujtaba NickaItalyAmy Elsner UNQUALIFIED
Julie StensethGermanyAmy Elsner PROPOSAL
Cody SaylorsItalyAmy Elsner QUALIFIED
Chavez BriddickSpainAnna Fali RENEWAL
Chavez BriddickBrazilAmy Elsner NEGOTIATION
Morrow RutaIndiaAsiya Javayant UNQUALIFIED
Cody SaylorsSpainXuxue Feng NEW
Ashley DoeSpainXuxue Feng NEW
Deepesh ChuiItalyAsiya Javayant RENEWAL
Emily WhobreyRussiaIoni Bowcher NEW
James ButtGermanyElwin Sharvill NEGOTIATION
James ButtItalyAnna Fali UNQUALIFIED
Greenwood BologniaUnited KingdomAmy Elsner PROPOSAL
Maisha RulapaughArgentinaBernardo Dominic NEW
Alejandro PerinAustraliaXuxue Feng PROPOSAL
Arvin AlbaresCanadaAsiya Javayant NEW
Jeanfrancois VenereSpainStephen Shaw QUALIFIED
Adams MorascaIndiaAsiya Javayant NEGOTIATION
Morrow RutaIndiaIvan Magalhaes QUALIFIED
Leon OldroydRussiaAsiya Javayant UNQUALIFIED
Leon OldroydFranceAmy Elsner NEGOTIATION
Costa DilliardRussiaAsiya Javayant PROPOSAL
Deepesh ChuiJapanIoni Bowcher QUALIFIED
Mayumi KolmetzAustraliaIvan Magalhaes NEGOTIATION
Octavia MaletSpainBernardo Dominic PROPOSAL
Johnson SergiJapanStephen Shaw UNQUALIFIED
Aditya KuskoItalyBernardo Dominic UNQUALIFIED
Deepesh ChuiAustraliaXuxue Feng PROPOSAL
Johnson SergiArgentinaBernardo Dominic NEGOTIATION
Aruna FigeroaGermanyAmy Elsner NEGOTIATION
Maisha RulapaughCanadaAmy Elsner NEGOTIATION
Frozen Columns
Name
Silvio Slusarski
Izzy Garufi
Deepesh Chui
Aika Inouye
Silvio Slusarski
Clifford Rim
Isabel Bowley
Ivar Paprocki
Ricardo Gaucho
Jefferson Schemmer
Costa Dilliard
Claire Tollner
Antonio Caudy
Mujtaba Nicka
Jefferson Schemmer
Smith Glick
Mujtaba Nicka
Arvin Albares
Emily Whobrey
Munro Ferencz
Mayumi Kolmetz
Julie Stenseth
Misaki Royster
Clifford Rim
Nicolas Iturbide
Morrow Ruta
Leon Oldroyd
Kadeem Flosi
Deepesh Chui
Nicolas Iturbide
Francesco Shinko
Jennifer Amigon
Octavia Malet
Jefferson Schemmer
Clifford Rim
Faith Gillian
James Butt
Munro Ferencz
Morrow Ruta
Morrow Ruta
Cody Saylors
Deepesh Chui
Tony Foller
Julie Stenseth
Munro Ferencz
Rodrigues Campain
Aika Inouye
Aruna Figeroa
Adams Morasca
Antonio Caudy
IdCountryDate
1000India2026-05-30
1001India2026-06-02
1002Canada2026-05-31
1003Spain2026-06-05
1004Italy2026-05-26
1005Russia2026-05-12
1006France2026-05-29
1007Canada2026-05-30
1008Australia2026-06-03
1009Germany2026-05-25
1010United Kingdom2026-05-24
1011Russia2026-05-31
1012Spain2026-05-27
1013Argentina2026-05-08
1014Germany2026-05-12
1015Argentina2026-06-04
1016Japan2026-06-01
1017Japan2026-05-15
1018United Kingdom2026-05-15
1019Canada2026-06-02
1020Australia2026-06-04
1021United Kingdom2026-05-09
1022Canada2026-06-03
1023Brazil2026-05-29
1024Russia2026-06-05
1025Argentina2026-05-09
1026Italy2026-05-17
1027Argentina2026-05-12
1028India2026-05-28
1029Spain2026-06-05
1030Italy2026-05-27
1031Japan2026-05-11
1032India2026-05-22
1033Australia2026-05-28
1034India2026-06-05
1035India2026-05-26
1036Japan2026-05-08
1037Japan2026-05-13
1038Japan2026-05-09
1039Brazil2026-05-20
1040Australia2026-05-15
1041Italy2026-06-03
1042Australia2026-06-04
1043Italy2026-05-07
1044Russia2026-05-09
1045France2026-05-25
1046India2026-06-04
1047France2026-05-07
1048Japan2026-05-26
1049Brazil2026-05-16

On-Demand Data

NameIdCountryDate
Sinclair Waycott1000India2026-05-26
Alejandro Perin1001France2026-06-03
Cody Saylors1002Spain2026-05-19
Chavez Briddick1003Russia2026-05-18
Leja Caldarera1004Italy2026-05-31
Alejandro Perin1005Japan2026-05-27
James Butt1006Spain2026-05-23
James Butt1007France2026-05-29
Faith Gillian1008Germany2026-05-11
Ashley Doe1009Japan2026-06-05
Mayumi Kolmetz1010India2026-05-13
Jones Vocelka1011Spain2026-05-20
Wickens Nestle1012Argentina2026-05-27
Deepesh Chui1013Brazil2026-05-26
Alejandro Perin1014Russia2026-06-02
Salvatore Stockham1015United Kingdom2026-05-26
Leja Caldarera1016Argentina2026-05-07
Maria Marrier1017Italy2026-05-24
Chavez Briddick1018Canada2026-05-15
Aika Inouye1019Germany2026-06-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia MaletIndiaXuxue Feng PROPOSAL
Mujtaba NickaAustraliaStephen Shaw NEW
Jones VocelkaCanadaStephen Shaw PROPOSAL
Izzy GarufiItalyIvan Magalhaes QUALIFIED
Claire TollnerGermanyAnna Fali PROPOSAL
Aika InouyeUnited KingdomAmy Elsner RENEWAL
Clifford RimFranceIoni Bowcher NEGOTIATION
Greenwood BologniaJapanStephen Shaw NEGOTIATION
Ashley DoeGermanyStephen Shaw PROPOSAL
Rodrigues CampainJapanStephen Shaw UNQUALIFIED
Faith GillianBrazilElwin Sharvill QUALIFIED
David DarakjyJapanElwin Sharvill RENEWAL
Greenwood BologniaRussiaAnna Fali NEGOTIATION
Cody SaylorsFranceAsiya Javayant PROPOSAL
Kadeem FlosiGermanyIoni Bowcher QUALIFIED
Morrow RutaGermanyAmy Elsner PROPOSAL
Faith GillianRussiaAsiya Javayant RENEWAL
Maria MarrierGermanyElwin Sharvill QUALIFIED
Juan WieserCanadaBernardo Dominic NEW
Stacey MacleadAustraliaAmy Elsner NEGOTIATION
Johnson SergiUnited KingdomIoni Bowcher RENEWAL
Tony FollerCanadaOnyama Limba RENEWAL
Deepesh ChuiUnited KingdomIvan Magalhaes QUALIFIED
Morrow RutaFranceBernardo Dominic RENEWAL
Ashley DoeSpainBernardo Dominic PROPOSAL
Alejandro PerinSpainXuxue Feng RENEWAL
Darci PoquetteFranceAnna Fali PROPOSAL
Leon OldroydCanadaIvan Magalhaes NEW
Greenwood BologniaGermanyStephen Shaw RENEWAL
James ButtSpainAsiya Javayant NEGOTIATION
Kadeem FlosiIndiaAmy Elsner PROPOSAL
Nicolas IturbideJapanAsiya Javayant PROPOSAL
Francesco ShinkoBrazilBernardo Dominic RENEWAL
Deepesh ChuiAustraliaIoni Bowcher NEGOTIATION
Alejandro PerinSpainXuxue Feng PROPOSAL
Leja CaldareraBrazilXuxue Feng QUALIFIED
Ashley DoeRussiaIvan Magalhaes NEW
Isabel BowleyCanadaXuxue Feng PROPOSAL
Tony FollerIndiaAnna Fali QUALIFIED
Tony FollerCanadaBernardo Dominic 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>