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
Silvio SlusarskiItalyOnyama Limba QUALIFIED
Julie StensethGermanyIvan Magalhaes NEGOTIATION
Morrow RutaIndiaIoni Bowcher NEW
Julie StensethGermanyXuxue Feng NEGOTIATION
David DarakjyFranceAmy Elsner QUALIFIED
Francesco ShinkoBrazilIoni Bowcher NEGOTIATION
Maria MarrierUnited KingdomStephen Shaw QUALIFIED
Aika InouyeItalyAmy Elsner NEGOTIATION
Munro FerenczRussiaXuxue Feng NEGOTIATION
Jones VocelkaFranceIoni Bowcher NEW
Leja CaldareraUnited KingdomElwin Sharvill PROPOSAL
Smith GlickJapanIvan Magalhaes UNQUALIFIED
Sinclair WaycottRussiaStephen Shaw NEW
Mayumi KolmetzArgentinaAnna Fali NEGOTIATION
Jefferson SchemmerRussiaXuxue Feng NEGOTIATION
Ashley DoeBrazilAsiya Javayant NEW
Ivar PaprockiIndiaStephen Shaw QUALIFIED
Sinclair WaycottGermanyXuxue Feng UNQUALIFIED
Adams MorascaRussiaOnyama Limba NEGOTIATION
Clifford RimFranceElwin Sharvill RENEWAL
Julie StensethUnited KingdomElwin Sharvill UNQUALIFIED
Johnson SergiArgentinaBernardo Dominic UNQUALIFIED
James ButtSpainIvan Magalhaes NEGOTIATION
Mayumi KolmetzArgentinaOnyama Limba PROPOSAL
Tony FollerCanadaAnna Fali QUALIFIED
Wickens NestleGermanyAsiya Javayant PROPOSAL
Maisha RulapaughSpainAsiya Javayant RENEWAL
Alejandro PerinItalyAnna Fali RENEWAL
Jeanfrancois VenereFranceIvan Magalhaes QUALIFIED
Munro FerenczCanadaAmy Elsner NEW
Faith GillianSpainXuxue Feng NEW
Kadeem FlosiRussiaStephen Shaw QUALIFIED
Darci PoquetteBrazilElwin Sharvill NEGOTIATION
Francesco ShinkoItalyAmy Elsner RENEWAL
Chavez BriddickAustraliaElwin Sharvill RENEWAL
Aruna FigeroaSpainAnna Fali RENEWAL
Jones VocelkaCanadaOnyama Limba PROPOSAL
Sinclair WaycottFranceElwin Sharvill PROPOSAL
Murillo MaletIndiaOnyama Limba UNQUALIFIED
Greenwood BologniaItalyBernardo Dominic QUALIFIED
Mujtaba NickaGermanyAmy Elsner QUALIFIED
Morrow RutaArgentinaAnna Fali QUALIFIED
Izzy GarufiSpainBernardo Dominic PROPOSAL
Jefferson SchemmerFranceBernardo Dominic NEW
James ButtAustraliaBernardo Dominic UNQUALIFIED
Munro FerenczIndiaAnna Fali RENEWAL
Leon OldroydIndiaBernardo Dominic NEW
Aruna FigeroaFranceXuxue Feng UNQUALIFIED
Claire TollnerSpainIvan Magalhaes RENEWAL
Ashley DoeUnited KingdomOnyama Limba NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Silvio SlusarskiItalyOnyama Limba RENEWAL
Ashley DoeFranceAmy Elsner PROPOSAL
Jennifer AmigonRussiaOnyama Limba QUALIFIED
David DarakjyRussiaAnna Fali NEW
Sinclair WaycottAustraliaIvan Magalhaes PROPOSAL
Smith GlickIndiaAsiya Javayant UNQUALIFIED
Misaki RoysterAustraliaAmy Elsner RENEWAL
Ashley DoeArgentinaStephen Shaw UNQUALIFIED
Nicolas IturbideArgentinaStephen Shaw NEGOTIATION
Adams MorascaArgentinaIvan Magalhaes RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika InouyeJapan2025-09-13Commercial Press QUALIFIED55Bernardo Dominic
1001Silvio SlusarskiGermany2025-09-12Rangoni Of Florence UNQUALIFIED99Stephen Shaw
1002Murillo MaletItaly2025-09-23Commercial Press RENEWAL88Ioni Bowcher
1003Ashley DoeIndia2025-09-18Feiner Bros NEGOTIATION57Amy Elsner
1004Claire TollnerSpain2025-09-26Feiner Bros UNQUALIFIED80Onyama Limba
1005Misaki RoysterFrance2025-10-05Feiner Bros UNQUALIFIED11Onyama Limba
1006Jefferson SchemmerIndia2025-09-14Chemel, James L Cpa UNQUALIFIED26Stephen Shaw
1007Kadeem FlosiIndia2025-09-26Truhlar And Truhlar Attys UNQUALIFIED76Amy Elsner
1008Jefferson SchemmerBrazil2025-09-22Morlong Associates NEW99Asiya Javayant
1009Jefferson SchemmerGermany2025-09-27Chemel, James L Cpa PROPOSAL28Bernardo Dominic
1010Arvin AlbaresJapan2025-09-17Commercial Press NEGOTIATION82Amy Elsner
1011Clifford RimIndia2025-09-14King, Christopher A Esq PROPOSAL46Onyama Limba
1012Julie StensethUnited Kingdom2025-09-27Commercial Press QUALIFIED17Stephen Shaw
1013Ashley DoeBrazil2025-09-28Truhlar And Truhlar Attys RENEWAL43Xuxue Feng
1014Maisha RulapaughJapan2025-09-25King, Christopher A Esq PROPOSAL10Stephen Shaw
1015Jefferson SchemmerArgentina2025-09-18Chapman, Ross E Esq UNQUALIFIED24Asiya Javayant
1016Francesco ShinkoIndia2025-09-11Morlong Associates PROPOSAL20Anna Fali
1017Munro FerenczRussia2025-09-25Rangoni Of Florence NEW50Xuxue Feng
1018Tony FollerBrazil2025-09-13Chanay, Jeffrey A Esq PROPOSAL28Anna Fali
1019Aditya KuskoItaly2025-09-10Rousseaux, Michael Esq QUALIFIED54Anna Fali
1020Kaitlin OstroskyItaly2025-09-11Chemel, James L Cpa PROPOSAL15Stephen Shaw
1021Adams MorascaItaly2025-10-05Buckley Miller Wright NEW65Asiya Javayant
1022Jennifer AmigonArgentina2025-09-27Commercial Press RENEWAL84Bernardo Dominic
1023Adams MorascaArgentina2025-09-16Buckley Miller Wright RENEWAL94Amy Elsner
1024Morrow RutaIndia2025-09-27Feiner Bros NEW16Stephen Shaw
1025Leon OldroydAustralia2025-09-14Truhlar And Truhlar Attys NEGOTIATION81Stephen Shaw
1026Arvin AlbaresItaly2025-09-22Chemel, James L Cpa QUALIFIED22Amy Elsner
1027Chavez BriddickItaly2025-09-21Printing Dimensions RENEWAL54Anna Fali
1028Leon OldroydJapan2025-09-20Truhlar And Truhlar Attys PROPOSAL30Amy Elsner
1029Izzy GarufiRussia2025-09-16Chapman, Ross E Esq NEW7Elwin Sharvill
1030Stacey MacleadCanada2025-09-24Morlong Associates NEW62Elwin Sharvill
1031Alejandro PerinGermany2025-09-29Chanay, Jeffrey A Esq NEGOTIATION8Amy Elsner
1032Munro FerenczFrance2025-09-27Morlong Associates UNQUALIFIED25Onyama Limba
1033Jeanfrancois VenereRussia2025-10-07Benton, John B Jr NEW51Ioni Bowcher
1034Smith GlickArgentina2025-09-17Rangoni Of Florence PROPOSAL10Asiya Javayant
1035Julie StensethGermany2025-09-19King, Christopher A Esq PROPOSAL16Amy Elsner
1036Isabel BowleySpain2025-09-14Feiner Bros NEW51Anna Fali
1037Smith GlickSpain2025-10-04Rangoni Of Florence PROPOSAL67Amy Elsner
1038Jefferson SchemmerArgentina2025-10-07Morlong Associates RENEWAL80Stephen Shaw
1039Jefferson SchemmerUnited Kingdom2025-09-26Benton, John B Jr RENEWAL72Stephen Shaw
1040James ButtCanada2025-09-12Morlong Associates UNQUALIFIED53Xuxue Feng
1041Adams MorascaArgentina2025-09-15Feiner Bros UNQUALIFIED56Elwin Sharvill
1042Murillo MaletGermany2025-09-12Rangoni Of Florence RENEWAL74Stephen Shaw
1043Clifford RimGermany2025-09-25Chemel, James L Cpa UNQUALIFIED13Ivan Magalhaes
1044Aruna FigeroaItaly2025-10-05Commercial Press QUALIFIED80Stephen Shaw
1045Cody SaylorsIndia2025-09-22Printing Dimensions PROPOSAL58Elwin Sharvill
1046Julie StensethArgentina2025-09-26Morlong Associates NEGOTIATION55Elwin Sharvill
1047Chavez BriddickIndia2025-10-05Morlong Associates QUALIFIED97Bernardo Dominic
1048Tony FollerRussia2025-10-01Truhlar And Truhlar Attys QUALIFIED87Xuxue Feng
1049Juan WieserSpain2025-10-07Chemel, James L Cpa QUALIFIED32Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Kadeem FlosiAustraliaBernardo Dominic NEW
Maria MarrierFranceAmy Elsner UNQUALIFIED
Munro FerenczBrazilAmy Elsner UNQUALIFIED
Silvio SlusarskiCanadaAsiya Javayant QUALIFIED
Murillo MaletBrazilStephen Shaw UNQUALIFIED
Cody SaylorsArgentinaAmy Elsner QUALIFIED
Alejandro PerinCanadaElwin Sharvill UNQUALIFIED
Deepesh ChuiFranceBernardo Dominic QUALIFIED
Greenwood BologniaJapanBernardo Dominic NEGOTIATION
Darci PoquetteRussiaElwin Sharvill PROPOSAL
Octavia MaletCanadaBernardo Dominic PROPOSAL
Sinclair WaycottCanadaBernardo Dominic NEW
Jefferson SchemmerGermanyBernardo Dominic RENEWAL
Silvio SlusarskiJapanStephen Shaw QUALIFIED
Johnson SergiSpainAmy Elsner NEW
David DarakjyUnited KingdomAmy Elsner NEW
Leja CaldareraFranceIvan Magalhaes PROPOSAL
Sinclair WaycottRussiaIvan Magalhaes PROPOSAL
Alejandro PerinArgentinaAmy Elsner RENEWAL
Ivar PaprockiArgentinaBernardo Dominic UNQUALIFIED
David DarakjyBrazilAnna Fali RENEWAL
Julie StensethItalyBernardo Dominic RENEWAL
Wickens NestleBrazilStephen Shaw NEW
Claire TollnerRussiaOnyama Limba NEW
Emily WhobreyArgentinaXuxue Feng UNQUALIFIED
Antonio CaudySpainElwin Sharvill UNQUALIFIED
Wickens NestleUnited KingdomElwin Sharvill PROPOSAL
Stacey MacleadArgentinaBernardo Dominic UNQUALIFIED
Mujtaba NickaAustraliaBernardo Dominic PROPOSAL
Ivar PaprockiRussiaBernardo Dominic NEW
Adams MorascaRussiaBernardo Dominic PROPOSAL
Chavez BriddickArgentinaElwin Sharvill UNQUALIFIED
Jennifer AmigonArgentinaAnna Fali QUALIFIED
Wickens NestleJapanAmy Elsner QUALIFIED
Chavez BriddickArgentinaStephen Shaw NEGOTIATION
Chavez BriddickJapanOnyama Limba QUALIFIED
Antonio CaudyFranceBernardo Dominic UNQUALIFIED
Chavez BriddickRussiaIoni Bowcher PROPOSAL
Octavia MaletBrazilElwin Sharvill PROPOSAL
Isabel BowleyItalyBernardo Dominic RENEWAL
David DarakjyItalyElwin Sharvill UNQUALIFIED
Aruna FigeroaIndiaOnyama Limba NEGOTIATION
Clifford RimBrazilAmy Elsner PROPOSAL
Darci PoquetteUnited KingdomIoni Bowcher RENEWAL
Jones VocelkaIndiaAnna Fali QUALIFIED
Morrow RutaBrazilOnyama Limba QUALIFIED
Mayumi KolmetzCanadaElwin Sharvill PROPOSAL
Greenwood BologniaIndiaAmy Elsner NEW
Stacey MacleadRussiaOnyama Limba UNQUALIFIED
Morrow RutaIndiaXuxue Feng QUALIFIED
Frozen Columns
Name
Leja Caldarera
Salvatore Stockham
Jones Vocelka
Greenwood Bolognia
Leon Oldroyd
Maisha Rulapaugh
Isabel Bowley
Adams Morasca
Alejandro Perin
Munro Ferencz
Darci Poquette
Stacey Maclead
Leja Caldarera
Ashley Doe
Stacey Maclead
James Butt
James Butt
Leon Oldroyd
James Butt
Rodrigues Campain
Mayumi Kolmetz
Arvin Albares
James Butt
Smith Glick
Ricardo Gaucho
Silvio Slusarski
Faith Gillian
Leon Oldroyd
Jefferson Schemmer
Jones Vocelka
James Butt
Cody Saylors
Sinclair Waycott
Leja Caldarera
Murillo Malet
Greenwood Bolognia
Jones Vocelka
Adams Morasca
Nicolas Iturbide
Kadeem Flosi
Izzy Garufi
Wickens Nestle
Kaitlin Ostrosky
Mujtaba Nicka
Jeanfrancois Venere
Aika Inouye
Aditya Kusko
Antonio Caudy
Jeanfrancois Venere
David Darakjy
IdCountryDate
1000Argentina2025-09-15
1001Canada2025-10-08
1002Germany2025-09-17
1003Russia2025-09-14
1004Spain2025-09-29
1005Brazil2025-09-25
1006Argentina2025-09-15
1007Spain2025-09-14
1008Brazil2025-10-04
1009Canada2025-10-06
1010Italy2025-09-14
1011France2025-09-11
1012Germany2025-09-28
1013Italy2025-09-15
1014Brazil2025-09-28
1015India2025-10-05
1016India2025-09-21
1017Australia2025-09-12
1018Spain2025-10-02
1019Australia2025-10-05
1020Russia2025-09-27
1021Italy2025-10-01
1022United Kingdom2025-09-12
1023Canada2025-09-30
1024Australia2025-10-04
1025Spain2025-10-05
1026Spain2025-10-09
1027India2025-09-28
1028France2025-09-22
1029Spain2025-10-01
1030Japan2025-09-20
1031Australia2025-09-26
1032Argentina2025-09-21
1033Spain2025-09-19
1034Canada2025-10-03
1035Australia2025-09-25
1036Italy2025-09-24
1037Brazil2025-09-22
1038Italy2025-10-09
1039Argentina2025-09-22
1040France2025-09-23
1041United Kingdom2025-10-01
1042Australia2025-09-22
1043Germany2025-09-30
1044Spain2025-09-29
1045United Kingdom2025-10-03
1046France2025-09-11
1047Italy2025-09-15
1048India2025-09-10
1049United Kingdom2025-09-22

On-Demand Data

NameIdCountryDate
Costa Dilliard1000Germany2025-09-25
Greenwood Bolognia1001France2025-09-14
Morrow Ruta1002Spain2025-09-11
David Darakjy1003India2025-09-24
Jeanfrancois Venere1004United Kingdom2025-09-29
Silvio Slusarski1005United Kingdom2025-09-13
Aditya Kusko1006Spain2025-10-02
Aika Inouye1007Spain2025-10-04
Chavez Briddick1008Russia2025-09-14
Jeanfrancois Venere1009Australia2025-09-25
Tony Foller1010Japan2025-09-30
Misaki Royster1011Italy2025-09-26
Octavia Malet1012Brazil2025-09-29
Johnson Sergi1013Australia2025-10-06
Juan Wieser1014Russia2025-10-02
Deepesh Chui1015Russia2025-09-22
Claire Tollner1016France2025-10-09
Clifford Rim1017Canada2025-09-20
Kadeem Flosi1018Japan2025-09-26
Nicolas Iturbide1019Japan2025-09-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Nicolas IturbideRussiaAsiya Javayant UNQUALIFIED
Maria MarrierCanadaXuxue Feng NEGOTIATION
Ashley DoeSpainAmy Elsner PROPOSAL
Misaki RoysterAustraliaBernardo Dominic QUALIFIED
Antonio CaudyRussiaAnna Fali PROPOSAL
Mujtaba NickaIndiaBernardo Dominic NEGOTIATION
Rodrigues CampainJapanAsiya Javayant NEGOTIATION
Stacey MacleadAustraliaElwin Sharvill UNQUALIFIED
Aditya KuskoIndiaIvan Magalhaes QUALIFIED
Kaitlin OstroskyCanadaIvan Magalhaes NEGOTIATION
Aika InouyeCanadaAnna Fali NEW
Clifford RimGermanyAsiya Javayant NEW
Antonio CaudyAustraliaElwin Sharvill UNQUALIFIED
Ricardo GauchoCanadaStephen Shaw UNQUALIFIED
Misaki RoysterCanadaBernardo Dominic RENEWAL
Maisha RulapaughSpainStephen Shaw UNQUALIFIED
Faith GillianItalyAnna Fali QUALIFIED
Darci PoquetteIndiaAmy Elsner RENEWAL
Silvio SlusarskiGermanyBernardo Dominic UNQUALIFIED
Ivar PaprockiItalyIvan Magalhaes RENEWAL
Jones VocelkaIndiaAsiya Javayant NEW
Izzy GarufiFranceStephen Shaw NEW
Ricardo GauchoAustraliaIoni Bowcher UNQUALIFIED
David DarakjyCanadaStephen Shaw QUALIFIED
Maria MarrierRussiaIoni Bowcher QUALIFIED
Francesco ShinkoItalyAmy Elsner UNQUALIFIED
Stacey MacleadUnited KingdomStephen Shaw RENEWAL
Kaitlin OstroskyFranceElwin Sharvill RENEWAL
Smith GlickUnited KingdomOnyama Limba RENEWAL
Stacey MacleadIndiaElwin Sharvill NEGOTIATION
David DarakjyArgentinaAmy Elsner UNQUALIFIED
Aditya KuskoAustraliaIoni Bowcher PROPOSAL
Salvatore StockhamGermanyXuxue Feng NEGOTIATION
Costa DilliardCanadaIoni Bowcher UNQUALIFIED
Stacey MacleadBrazilIvan Magalhaes NEW
Izzy GarufiGermanyStephen Shaw UNQUALIFIED
Smith GlickJapanIoni Bowcher QUALIFIED
Emily WhobreyJapanAnna Fali RENEWAL
Chavez BriddickArgentinaOnyama Limba RENEWAL
Johnson SergiFranceAnna Fali 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>