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
Munro FerenczGermanyOnyama Limba NEGOTIATION
Francesco ShinkoSpainElwin Sharvill PROPOSAL
Stacey MacleadAustraliaAnna Fali NEW
Jennifer AmigonBrazilElwin Sharvill UNQUALIFIED
Clifford RimFranceIvan Magalhaes RENEWAL
Arvin AlbaresFranceElwin Sharvill UNQUALIFIED
Julie StensethArgentinaAmy Elsner RENEWAL
Maisha RulapaughFranceAsiya Javayant NEGOTIATION
Rodrigues CampainSpainBernardo Dominic PROPOSAL
Octavia MaletItalyAnna Fali NEGOTIATION
David DarakjyItalyStephen Shaw PROPOSAL
Aika InouyeFranceAsiya Javayant QUALIFIED
Aika InouyeArgentinaIvan Magalhaes NEGOTIATION
Arvin AlbaresFranceBernardo Dominic UNQUALIFIED
Faith GillianItalyIvan Magalhaes NEGOTIATION
Jennifer AmigonSpainAmy Elsner PROPOSAL
Cody SaylorsCanadaElwin Sharvill QUALIFIED
Leja CaldareraCanadaAmy Elsner PROPOSAL
James ButtCanadaIvan Magalhaes NEW
Silvio SlusarskiRussiaOnyama Limba RENEWAL
Antonio CaudyCanadaBernardo Dominic UNQUALIFIED
Ricardo GauchoSpainAnna Fali NEW
Sinclair WaycottAustraliaOnyama Limba RENEWAL
Kaitlin OstroskySpainOnyama Limba NEW
Morrow RutaGermanyAnna Fali PROPOSAL
Cody SaylorsFranceIvan Magalhaes UNQUALIFIED
Jennifer AmigonSpainXuxue Feng UNQUALIFIED
Jones VocelkaSpainIvan Magalhaes RENEWAL
Murillo MaletRussiaBernardo Dominic RENEWAL
Ivar PaprockiCanadaAmy Elsner QUALIFIED
Maisha RulapaughRussiaOnyama Limba NEGOTIATION
Jennifer AmigonRussiaAnna Fali QUALIFIED
Maisha RulapaughRussiaOnyama Limba RENEWAL
Jennifer AmigonItalyOnyama Limba UNQUALIFIED
Murillo MaletGermanyXuxue Feng NEGOTIATION
Jeanfrancois VenereArgentinaAmy Elsner UNQUALIFIED
Jeanfrancois VenereAustraliaIoni Bowcher RENEWAL
Kaitlin OstroskyRussiaIoni Bowcher QUALIFIED
Kadeem FlosiCanadaStephen Shaw NEW
David DarakjySpainAsiya Javayant NEW
Sinclair WaycottItalyAsiya Javayant PROPOSAL
Claire TollnerCanadaAmy Elsner NEW
James ButtIndiaOnyama Limba PROPOSAL
Ivar PaprockiFranceXuxue Feng RENEWAL
Octavia MaletJapanIoni Bowcher QUALIFIED
Cody SaylorsBrazilXuxue Feng RENEWAL
Smith GlickArgentinaStephen Shaw RENEWAL
Darci PoquetteBrazilAmy Elsner NEW
Tony FollerJapanIoni Bowcher UNQUALIFIED
Kaitlin OstroskyAustraliaStephen Shaw UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Emily WhobreyIndiaIvan Magalhaes QUALIFIED
Ivar PaprockiGermanyAnna Fali QUALIFIED
Aika InouyeRussiaOnyama Limba PROPOSAL
Octavia MaletBrazilIoni Bowcher UNQUALIFIED
Ashley DoeUnited KingdomAmy Elsner UNQUALIFIED
Adams MorascaRussiaOnyama Limba PROPOSAL
Deepesh ChuiJapanElwin Sharvill UNQUALIFIED
Jeanfrancois VenereSpainElwin Sharvill UNQUALIFIED
Alejandro PerinBrazilIoni Bowcher RENEWAL
Cody SaylorsItalyBernardo Dominic PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki RoysterUnited Kingdom2026-05-31Chemel, James L Cpa NEGOTIATION97Xuxue Feng
1001Kaitlin OstroskyFrance2026-05-27Chapman, Ross E Esq UNQUALIFIED15Xuxue Feng
1002Darci PoquetteRussia2026-06-08King, Christopher A Esq NEW9Ioni Bowcher
1003Isabel BowleyIndia2026-05-30Truhlar And Truhlar Attys UNQUALIFIED43Anna Fali
1004Stacey MacleadRussia2026-05-22Printing Dimensions NEW56Onyama Limba
1005Nicolas IturbideItaly2026-06-09Rousseaux, Michael Esq QUALIFIED33Ioni Bowcher
1006Darci PoquetteUnited Kingdom2026-06-10Commercial Press NEGOTIATION30Ioni Bowcher
1007Munro FerenczSpain2026-06-01Chanay, Jeffrey A Esq QUALIFIED79Ivan Magalhaes
1008Costa DilliardCanada2026-05-22Truhlar And Truhlar Attys UNQUALIFIED99Xuxue Feng
1009Misaki RoysterItaly2026-05-22Feiner Bros NEGOTIATION56Ioni Bowcher
1010Isabel BowleyFrance2026-05-19Benton, John B Jr QUALIFIED82Bernardo Dominic
1011Stacey MacleadItaly2026-05-20Truhlar And Truhlar Attys RENEWAL72Ivan Magalhaes
1012Chavez BriddickFrance2026-06-07King, Christopher A Esq PROPOSAL49Ioni Bowcher
1013Morrow RutaSpain2026-06-11Morlong Associates NEGOTIATION87Anna Fali
1014Kadeem FlosiCanada2026-06-04Chemel, James L Cpa RENEWAL20Elwin Sharvill
1015Leja CaldareraGermany2026-06-15Truhlar And Truhlar Attys NEW11Ivan Magalhaes
1016Stacey MacleadSpain2026-06-04Printing Dimensions QUALIFIED89Amy Elsner
1017David DarakjyBrazil2026-05-25Benton, John B Jr NEW33Ioni Bowcher
1018Silvio SlusarskiJapan2026-05-30Morlong Associates NEGOTIATION59Anna Fali
1019Munro FerenczSpain2026-05-27Dorl, James J Esq QUALIFIED39Onyama Limba
1020Murillo MaletFrance2026-06-15Rousseaux, Michael Esq UNQUALIFIED2Anna Fali
1021Clifford RimUnited Kingdom2026-05-29Morlong Associates NEW20Stephen Shaw
1022Silvio SlusarskiRussia2026-05-27Rousseaux, Michael Esq NEW86Amy Elsner
1023Faith GillianFrance2026-06-05Commercial Press RENEWAL92Bernardo Dominic
1024Murillo MaletJapan2026-06-13Rangoni Of Florence QUALIFIED50Stephen Shaw
1025Aditya KuskoCanada2026-06-15King, Christopher A Esq NEGOTIATION48Onyama Limba
1026Aditya KuskoSpain2026-05-20Morlong Associates PROPOSAL1Bernardo Dominic
1027Izzy GarufiArgentina2026-05-24Rangoni Of Florence QUALIFIED8Ivan Magalhaes
1028Aditya KuskoGermany2026-05-29King, Christopher A Esq UNQUALIFIED20Asiya Javayant
1029Ricardo GauchoCanada2026-06-06Printing Dimensions UNQUALIFIED79Onyama Limba
1030Francesco ShinkoFrance2026-05-27Commercial Press UNQUALIFIED84Bernardo Dominic
1031Murillo MaletIndia2026-05-20Morlong Associates NEW3Ioni Bowcher
1032Aika InouyeItaly2026-06-06Rousseaux, Michael Esq NEW31Onyama Limba
1033Francesco ShinkoFrance2026-06-16Benton, John B Jr QUALIFIED14Onyama Limba
1034Adams MorascaJapan2026-06-14Chapman, Ross E Esq UNQUALIFIED8Onyama Limba
1035Wickens NestleBrazil2026-06-12Feltz Printing Service NEGOTIATION87Xuxue Feng
1036Alejandro PerinAustralia2026-05-19Benton, John B Jr UNQUALIFIED14Xuxue Feng
1037Claire TollnerIndia2026-05-31Chanay, Jeffrey A Esq UNQUALIFIED21Xuxue Feng
1038David DarakjyItaly2026-05-19Buckley Miller Wright QUALIFIED4Amy Elsner
1039Jennifer AmigonSpain2026-06-01Chanay, Jeffrey A Esq UNQUALIFIED33Xuxue Feng
1040Maisha RulapaughJapan2026-06-07Rousseaux, Michael Esq PROPOSAL17Elwin Sharvill
1041Johnson SergiBrazil2026-05-20Commercial Press NEGOTIATION34Onyama Limba
1042Aika InouyeItaly2026-05-31Chapman, Ross E Esq UNQUALIFIED42Xuxue Feng
1043Adams MorascaItaly2026-05-27King, Christopher A Esq QUALIFIED59Ivan Magalhaes
1044Munro FerenczUnited Kingdom2026-06-09Truhlar And Truhlar Attys PROPOSAL53Elwin Sharvill
1045Stacey MacleadArgentina2026-06-07Chemel, James L Cpa NEGOTIATION67Anna Fali
1046Kadeem FlosiBrazil2026-05-30Printing Dimensions PROPOSAL33Elwin Sharvill
1047David DarakjyUnited Kingdom2026-05-20Feltz Printing Service QUALIFIED27Stephen Shaw
1048Alejandro PerinGermany2026-06-14Rousseaux, Michael Esq NEGOTIATION5Bernardo Dominic
1049Salvatore StockhamFrance2026-05-31Buckley Miller Wright NEW42Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Deepesh ChuiFranceAmy Elsner QUALIFIED
Rodrigues CampainItalyIvan Magalhaes NEW
Nicolas IturbideArgentinaIoni Bowcher UNQUALIFIED
Francesco ShinkoJapanIvan Magalhaes UNQUALIFIED
Adams MorascaIndiaAsiya Javayant QUALIFIED
Stacey MacleadArgentinaBernardo Dominic RENEWAL
Jones VocelkaRussiaIoni Bowcher RENEWAL
Octavia MaletRussiaElwin Sharvill NEGOTIATION
James ButtArgentinaXuxue Feng PROPOSAL
Rodrigues CampainRussiaBernardo Dominic PROPOSAL
Salvatore StockhamRussiaXuxue Feng NEW
Chavez BriddickRussiaXuxue Feng PROPOSAL
James ButtIndiaElwin Sharvill NEW
Murillo MaletFranceElwin Sharvill RENEWAL
Murillo MaletAustraliaAsiya Javayant NEW
Salvatore StockhamItalyXuxue Feng UNQUALIFIED
Darci PoquetteGermanyBernardo Dominic UNQUALIFIED
Emily WhobreySpainAsiya Javayant QUALIFIED
Francesco ShinkoArgentinaAsiya Javayant PROPOSAL
Juan WieserGermanyAmy Elsner UNQUALIFIED
Morrow RutaCanadaOnyama Limba RENEWAL
Jefferson SchemmerArgentinaBernardo Dominic NEGOTIATION
Deepesh ChuiSpainAnna Fali UNQUALIFIED
Clifford RimItalyXuxue Feng QUALIFIED
Aika InouyeJapanElwin Sharvill NEW
Jefferson SchemmerIndiaIoni Bowcher NEGOTIATION
Smith GlickIndiaStephen Shaw NEGOTIATION
Misaki RoysterAustraliaXuxue Feng UNQUALIFIED
Julie StensethCanadaElwin Sharvill PROPOSAL
Salvatore StockhamArgentinaAnna Fali UNQUALIFIED
Mayumi KolmetzAustraliaIoni Bowcher NEGOTIATION
Murillo MaletFranceAmy Elsner PROPOSAL
Octavia MaletArgentinaXuxue Feng NEW
Ashley DoeRussiaStephen Shaw PROPOSAL
Sinclair WaycottIndiaIoni Bowcher NEW
Jones VocelkaRussiaAsiya Javayant NEW
Sinclair WaycottJapanStephen Shaw QUALIFIED
Rodrigues CampainSpainAmy Elsner QUALIFIED
Mujtaba NickaBrazilIvan Magalhaes RENEWAL
Cody SaylorsItalyStephen Shaw PROPOSAL
Aika InouyeSpainAnna Fali NEGOTIATION
Adams MorascaCanadaOnyama Limba UNQUALIFIED
Isabel BowleyCanadaIvan Magalhaes NEW
Jeanfrancois VenereJapanElwin Sharvill NEW
Ashley DoeFranceOnyama Limba UNQUALIFIED
Faith GillianRussiaIoni Bowcher NEW
Faith GillianGermanyXuxue Feng NEGOTIATION
Smith GlickIndiaBernardo Dominic NEGOTIATION
Tony FollerFranceAsiya Javayant NEGOTIATION
Rodrigues CampainAustraliaAnna Fali NEW
Frozen Columns
Name
Leja Caldarera
Misaki Royster
Darci Poquette
Clifford Rim
Silvio Slusarski
Tony Foller
Wickens Nestle
Clifford Rim
Mujtaba Nicka
Salvatore Stockham
Cody Saylors
Arvin Albares
Antonio Caudy
Jennifer Amigon
Isabel Bowley
Mujtaba Nicka
Faith Gillian
Jones Vocelka
Greenwood Bolognia
David Darakjy
Jennifer Amigon
Ricardo Gaucho
Clifford Rim
Nicolas Iturbide
Greenwood Bolognia
Sinclair Waycott
Adams Morasca
Stacey Maclead
James Butt
Octavia Malet
Francesco Shinko
Munro Ferencz
Mujtaba Nicka
Emily Whobrey
Juan Wieser
Johnson Sergi
Smith Glick
Jefferson Schemmer
Aruna Figeroa
Jones Vocelka
Kadeem Flosi
Leon Oldroyd
Arvin Albares
Nicolas Iturbide
Leon Oldroyd
Maria Marrier
Misaki Royster
Johnson Sergi
Smith Glick
Sinclair Waycott
IdCountryDate
1000Canada2026-05-30
1001Russia2026-06-14
1002Germany2026-05-21
1003Australia2026-05-29
1004Argentina2026-06-13
1005Canada2026-06-10
1006United Kingdom2026-06-09
1007Australia2026-06-06
1008Russia2026-06-16
1009Canada2026-06-10
1010Germany2026-06-17
1011France2026-06-05
1012Australia2026-06-05
1013Brazil2026-06-06
1014Japan2026-06-10
1015France2026-05-26
1016Russia2026-05-23
1017India2026-05-27
1018Italy2026-06-01
1019Canada2026-05-25
1020Argentina2026-06-16
1021United Kingdom2026-06-02
1022France2026-06-13
1023Italy2026-06-11
1024India2026-06-17
1025France2026-05-21
1026Canada2026-06-05
1027Italy2026-06-16
1028Brazil2026-05-23
1029United Kingdom2026-06-11
1030Spain2026-05-29
1031Japan2026-06-02
1032France2026-05-29
1033Germany2026-06-14
1034Australia2026-05-25
1035Russia2026-05-20
1036Japan2026-05-24
1037Australia2026-05-30
1038India2026-06-14
1039Brazil2026-06-03
1040France2026-06-02
1041Russia2026-05-29
1042Argentina2026-06-16
1043United Kingdom2026-06-08
1044Spain2026-05-28
1045Italy2026-06-13
1046Canada2026-05-25
1047Russia2026-05-20
1048Spain2026-06-14
1049United Kingdom2026-06-11

On-Demand Data

NameIdCountryDate
Jeanfrancois Venere1000France2026-05-28
Maria Marrier1001Spain2026-06-06
Tony Foller1002Argentina2026-06-02
Jeanfrancois Venere1003India2026-06-10
Mujtaba Nicka1004Italy2026-06-03
Salvatore Stockham1005Japan2026-06-11
Cody Saylors1006France2026-06-12
Misaki Royster1007France2026-05-20
James Butt1008France2026-06-02
Ashley Doe1009India2026-05-29
Tony Foller1010United Kingdom2026-06-06
Clifford Rim1011Spain2026-06-13
Silvio Slusarski1012Canada2026-06-16
Murillo Malet1013Germany2026-05-24
Julie Stenseth1014Germany2026-05-22
Jones Vocelka1015Italy2026-06-15
Ivar Paprocki1016Australia2026-05-31
David Darakjy1017Brazil2026-05-29
Kadeem Flosi1018Canada2026-05-28
Nicolas Iturbide1019Canada2026-05-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika InouyeAustraliaElwin Sharvill NEGOTIATION
Wickens NestleBrazilElwin Sharvill UNQUALIFIED
Chavez BriddickBrazilElwin Sharvill NEW
Francesco ShinkoGermanyIvan Magalhaes QUALIFIED
Johnson SergiGermanyXuxue Feng PROPOSAL
Jefferson SchemmerJapanIoni Bowcher PROPOSAL
Kadeem FlosiAustraliaAnna Fali NEGOTIATION
Kadeem FlosiRussiaAsiya Javayant NEGOTIATION
Leon OldroydSpainStephen Shaw PROPOSAL
Murillo MaletGermanyIoni Bowcher NEGOTIATION
James ButtRussiaStephen Shaw PROPOSAL
Aditya KuskoJapanAsiya Javayant RENEWAL
Maria MarrierCanadaBernardo Dominic NEGOTIATION
Aditya KuskoUnited KingdomOnyama Limba UNQUALIFIED
Jefferson SchemmerGermanyAmy Elsner RENEWAL
Ivar PaprockiIndiaIvan Magalhaes PROPOSAL
Jennifer AmigonFranceStephen Shaw PROPOSAL
Nicolas IturbideFranceElwin Sharvill NEW
Jeanfrancois VenereGermanyIoni Bowcher NEW
Aika InouyeIndiaIvan Magalhaes NEW
Maisha RulapaughSpainAnna Fali UNQUALIFIED
Arvin AlbaresArgentinaStephen Shaw RENEWAL
Misaki RoysterJapanAnna Fali NEGOTIATION
Deepesh ChuiRussiaXuxue Feng UNQUALIFIED
Jefferson SchemmerJapanIvan Magalhaes NEGOTIATION
Mujtaba NickaArgentinaIoni Bowcher PROPOSAL
Ashley DoeBrazilIoni Bowcher QUALIFIED
Ivar PaprockiRussiaElwin Sharvill NEW
Smith GlickIndiaAnna Fali RENEWAL
Antonio CaudyUnited KingdomBernardo Dominic QUALIFIED
Leja CaldareraJapanOnyama Limba UNQUALIFIED
Leon OldroydBrazilIvan Magalhaes RENEWAL
Leon OldroydRussiaXuxue Feng QUALIFIED
Ashley DoeCanadaOnyama Limba PROPOSAL
Arvin AlbaresIndiaIoni Bowcher UNQUALIFIED
Alejandro PerinJapanIvan Magalhaes UNQUALIFIED
Tony FollerUnited KingdomIvan Magalhaes PROPOSAL
Ashley DoeItalyElwin Sharvill PROPOSAL
Izzy GarufiArgentinaStephen Shaw UNQUALIFIED
Juan WieserJapanIvan Magalhaes 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>