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
Antonio CaudyUnited KingdomStephen Shaw RENEWAL
Adams MorascaArgentinaElwin Sharvill RENEWAL
Leja CaldareraCanadaStephen Shaw UNQUALIFIED
Emily WhobreyIndiaStephen Shaw NEW
Julie StensethUnited KingdomElwin Sharvill UNQUALIFIED
Leja CaldareraJapanStephen Shaw RENEWAL
Ashley DoeIndiaElwin Sharvill UNQUALIFIED
Alejandro PerinRussiaElwin Sharvill NEGOTIATION
Jeanfrancois VenereArgentinaOnyama Limba QUALIFIED
Silvio SlusarskiSpainAsiya Javayant NEW
Nicolas IturbideAustraliaAnna Fali RENEWAL
Sinclair WaycottFranceBernardo Dominic PROPOSAL
Leja CaldareraItalyAsiya Javayant RENEWAL
Mayumi KolmetzAustraliaIvan Magalhaes PROPOSAL
Emily WhobreyJapanAnna Fali QUALIFIED
Misaki RoysterUnited KingdomOnyama Limba RENEWAL
Sinclair WaycottUnited KingdomXuxue Feng QUALIFIED
Kadeem FlosiUnited KingdomXuxue Feng PROPOSAL
David DarakjyCanadaStephen Shaw QUALIFIED
Maisha RulapaughFranceAnna Fali PROPOSAL
Juan WieserCanadaAnna Fali NEW
Jeanfrancois VenereAustraliaAmy Elsner PROPOSAL
Claire TollnerArgentinaStephen Shaw PROPOSAL
Jeanfrancois VenereItalyBernardo Dominic QUALIFIED
Kaitlin OstroskySpainIoni Bowcher NEGOTIATION
Kadeem FlosiCanadaAnna Fali NEW
Octavia MaletSpainXuxue Feng PROPOSAL
Jefferson SchemmerFranceAnna Fali UNQUALIFIED
Juan WieserBrazilXuxue Feng UNQUALIFIED
Ivar PaprockiItalyAmy Elsner RENEWAL
Darci PoquetteUnited KingdomAnna Fali QUALIFIED
Kaitlin OstroskySpainIoni Bowcher UNQUALIFIED
Jennifer AmigonSpainAsiya Javayant NEW
Jennifer AmigonArgentinaIoni Bowcher UNQUALIFIED
James ButtArgentinaAmy Elsner NEW
Darci PoquetteGermanyAnna Fali QUALIFIED
Jones VocelkaCanadaAsiya Javayant QUALIFIED
Jefferson SchemmerUnited KingdomIoni Bowcher RENEWAL
Mayumi KolmetzGermanyAmy Elsner QUALIFIED
David DarakjyBrazilIoni Bowcher UNQUALIFIED
Wickens NestleBrazilStephen Shaw NEGOTIATION
Johnson SergiIndiaAnna Fali RENEWAL
Greenwood BologniaAustraliaIvan Magalhaes PROPOSAL
Ricardo GauchoJapanOnyama Limba NEGOTIATION
Jefferson SchemmerIndiaElwin Sharvill UNQUALIFIED
Nicolas IturbideArgentinaAmy Elsner UNQUALIFIED
Leja CaldareraFranceElwin Sharvill UNQUALIFIED
Stacey MacleadArgentinaIoni Bowcher RENEWAL
Misaki RoysterRussiaOnyama Limba NEW
Johnson SergiJapanIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Rodrigues CampainItalyIoni Bowcher NEGOTIATION
Darci PoquetteJapanElwin Sharvill RENEWAL
Isabel BowleyGermanyOnyama Limba UNQUALIFIED
Cody SaylorsIndiaStephen Shaw QUALIFIED
Francesco ShinkoBrazilAmy Elsner QUALIFIED
Leon OldroydJapanXuxue Feng UNQUALIFIED
Maisha RulapaughJapanBernardo Dominic RENEWAL
Salvatore StockhamIndiaAsiya Javayant RENEWAL
Ricardo GauchoRussiaOnyama Limba NEW
Jennifer AmigonUnited KingdomElwin Sharvill UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey MacleadBrazil2026-04-15Benton, John B Jr NEW85Ivan Magalhaes
1001Rodrigues CampainAustralia2026-04-18Chanay, Jeffrey A Esq PROPOSAL82Elwin Sharvill
1002Jennifer AmigonJapan2026-04-16Benton, John B Jr PROPOSAL52Bernardo Dominic
1003Smith GlickArgentina2026-04-17Rangoni Of Florence NEW78Ioni Bowcher
1004Alejandro PerinAustralia2026-04-06Feiner Bros UNQUALIFIED10Ivan Magalhaes
1005Jennifer AmigonGermany2026-04-03Benton, John B Jr QUALIFIED22Xuxue Feng
1006Sinclair WaycottJapan2026-04-04Printing Dimensions QUALIFIED50Xuxue Feng
1007Aditya KuskoIndia2026-04-07Morlong Associates PROPOSAL40Onyama Limba
1008Claire TollnerItaly2026-04-09King, Christopher A Esq UNQUALIFIED16Anna Fali
1009Stacey MacleadFrance2026-04-23Benton, John B Jr NEW46Asiya Javayant
1010Rodrigues CampainGermany2026-04-02Buckley Miller Wright RENEWAL58Ivan Magalhaes
1011Juan WieserItaly2026-04-01Feiner Bros PROPOSAL77Onyama Limba
1012Octavia MaletJapan2026-04-07Buckley Miller Wright PROPOSAL81Bernardo Dominic
1013Cody SaylorsFrance2026-04-11Chanay, Jeffrey A Esq NEW45Amy Elsner
1014James ButtBrazil2026-04-18Printing Dimensions PROPOSAL86Elwin Sharvill
1015Tony FollerBrazil2026-04-09King, Christopher A Esq PROPOSAL66Asiya Javayant
1016Murillo MaletCanada2026-04-18Benton, John B Jr PROPOSAL24Xuxue Feng
1017Kadeem FlosiRussia2026-04-16Benton, John B Jr QUALIFIED10Ioni Bowcher
1018Ashley DoeRussia2026-04-22Benton, John B Jr RENEWAL45Onyama Limba
1019Morrow RutaSpain2026-03-30Rangoni Of Florence NEW76Xuxue Feng
1020Leon OldroydBrazil2026-04-03Chapman, Ross E Esq RENEWAL72Amy Elsner
1021Misaki RoysterAustralia2026-04-07Chanay, Jeffrey A Esq PROPOSAL96Bernardo Dominic
1022Tony FollerAustralia2026-03-29Printing Dimensions RENEWAL10Onyama Limba
1023Juan WieserRussia2026-04-23Chapman, Ross E Esq NEW73Stephen Shaw
1024Aditya KuskoUnited Kingdom2026-03-28Feiner Bros PROPOSAL76Bernardo Dominic
1025Johnson SergiCanada2026-04-17Chemel, James L Cpa UNQUALIFIED19Ivan Magalhaes
1026Octavia MaletItaly2026-04-12Rangoni Of Florence NEW98Stephen Shaw
1027Aditya KuskoItaly2026-03-30Buckley Miller Wright RENEWAL38Amy Elsner
1028Rodrigues CampainJapan2026-03-27Buckley Miller Wright QUALIFIED13Xuxue Feng
1029Darci PoquetteItaly2026-04-19Dorl, James J Esq QUALIFIED70Ioni Bowcher
1030Claire TollnerJapan2026-03-30Buckley Miller Wright QUALIFIED18Ivan Magalhaes
1031Aika InouyeGermany2026-04-06Morlong Associates QUALIFIED75Amy Elsner
1032Sinclair WaycottItaly2026-04-01Buckley Miller Wright NEGOTIATION59Amy Elsner
1033Salvatore StockhamItaly2026-03-30Rousseaux, Michael Esq UNQUALIFIED81Bernardo Dominic
1034Rodrigues CampainSpain2026-04-15Commercial Press NEGOTIATION60Amy Elsner
1035Mayumi KolmetzSpain2026-04-25Morlong Associates NEGOTIATION92Amy Elsner
1036Ivar PaprockiGermany2026-03-29Chemel, James L Cpa NEGOTIATION74Asiya Javayant
1037Alejandro PerinRussia2026-04-14Dorl, James J Esq RENEWAL83Bernardo Dominic
1038Leja CaldareraJapan2026-04-14Chemel, James L Cpa UNQUALIFIED25Ioni Bowcher
1039Ricardo GauchoAustralia2026-04-20Benton, John B Jr NEW10Onyama Limba
1040David DarakjyArgentina2026-04-11King, Christopher A Esq NEW79Ivan Magalhaes
1041Tony FollerGermany2026-04-22Feltz Printing Service PROPOSAL60Asiya Javayant
1042Jeanfrancois VenereArgentina2026-04-08Rousseaux, Michael Esq RENEWAL72Ioni Bowcher
1043Emily WhobreyItaly2026-04-15Morlong Associates PROPOSAL45Stephen Shaw
1044James ButtBrazil2026-04-19Dorl, James J Esq UNQUALIFIED24Xuxue Feng
1045Jeanfrancois VenereAustralia2026-04-11Morlong Associates RENEWAL74Amy Elsner
1046Morrow RutaFrance2026-04-22Rangoni Of Florence NEGOTIATION41Onyama Limba
1047Juan WieserGermany2026-04-10Chapman, Ross E Esq UNQUALIFIED90Bernardo Dominic
1048Antonio CaudyGermany2026-04-14Buckley Miller Wright UNQUALIFIED97Stephen Shaw
1049Darci PoquetteBrazil2026-03-27Buckley Miller Wright NEW63Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Jefferson SchemmerAustraliaOnyama Limba NEGOTIATION
Munro FerenczGermanyXuxue Feng QUALIFIED
Aditya KuskoFranceStephen Shaw RENEWAL
Misaki RoysterCanadaXuxue Feng NEGOTIATION
Sinclair WaycottBrazilAnna Fali PROPOSAL
David DarakjyUnited KingdomElwin Sharvill RENEWAL
Tony FollerUnited KingdomElwin Sharvill NEW
Francesco ShinkoArgentinaBernardo Dominic QUALIFIED
Leja CaldareraCanadaIoni Bowcher NEW
Maisha RulapaughUnited KingdomIoni Bowcher UNQUALIFIED
Ashley DoeArgentinaBernardo Dominic NEGOTIATION
Smith GlickCanadaStephen Shaw NEW
David DarakjyItalyElwin Sharvill PROPOSAL
Jefferson SchemmerSpainAnna Fali PROPOSAL
Maisha RulapaughArgentinaStephen Shaw NEGOTIATION
Kaitlin OstroskyBrazilOnyama Limba NEW
Aditya KuskoGermanyBernardo Dominic NEGOTIATION
Leja CaldareraFranceIoni Bowcher NEW
Leon OldroydItalyElwin Sharvill QUALIFIED
Ricardo GauchoCanadaIvan Magalhaes UNQUALIFIED
Mujtaba NickaSpainAmy Elsner QUALIFIED
Rodrigues CampainJapanBernardo Dominic RENEWAL
Stacey MacleadJapanBernardo Dominic NEGOTIATION
Mayumi KolmetzArgentinaBernardo Dominic NEGOTIATION
Ivar PaprockiSpainIoni Bowcher NEGOTIATION
Maria MarrierCanadaAsiya Javayant UNQUALIFIED
Leja CaldareraRussiaAmy Elsner RENEWAL
Munro FerenczUnited KingdomStephen Shaw NEGOTIATION
Aika InouyeUnited KingdomXuxue Feng NEW
Mayumi KolmetzFranceOnyama Limba QUALIFIED
Costa DilliardSpainAsiya Javayant RENEWAL
Aditya KuskoAustraliaAnna Fali PROPOSAL
Leja CaldareraAustraliaIvan Magalhaes NEW
Johnson SergiCanadaOnyama Limba PROPOSAL
Aditya KuskoIndiaOnyama Limba UNQUALIFIED
Emily WhobreyCanadaStephen Shaw UNQUALIFIED
James ButtSpainElwin Sharvill NEGOTIATION
Claire TollnerFranceXuxue Feng UNQUALIFIED
David DarakjyAustraliaBernardo Dominic NEGOTIATION
Octavia MaletCanadaOnyama Limba PROPOSAL
Nicolas IturbideGermanyAsiya Javayant NEW
Nicolas IturbideCanadaBernardo Dominic QUALIFIED
Sinclair WaycottSpainIoni Bowcher QUALIFIED
Juan WieserGermanyAsiya Javayant RENEWAL
Ivar PaprockiFranceStephen Shaw QUALIFIED
Silvio SlusarskiItalyAmy Elsner UNQUALIFIED
Antonio CaudyItalyAnna Fali QUALIFIED
Leja CaldareraItalyIvan Magalhaes RENEWAL
Kaitlin OstroskyIndiaAnna Fali NEW
Johnson SergiItalyAnna Fali UNQUALIFIED
Frozen Columns
Name
Jennifer Amigon
Smith Glick
Costa Dilliard
Morrow Ruta
Clifford Rim
Clifford Rim
Johnson Sergi
Antonio Caudy
Morrow Ruta
Izzy Garufi
Ricardo Gaucho
Chavez Briddick
Deepesh Chui
Leja Caldarera
Aditya Kusko
David Darakjy
Isabel Bowley
Octavia Malet
Jefferson Schemmer
Aika Inouye
Izzy Garufi
Jefferson Schemmer
Aika Inouye
Ivar Paprocki
Aditya Kusko
Mayumi Kolmetz
Aditya Kusko
Ashley Doe
Deepesh Chui
Kaitlin Ostrosky
Chavez Briddick
Ashley Doe
Aditya Kusko
Maria Marrier
Adams Morasca
Mayumi Kolmetz
Aruna Figeroa
Johnson Sergi
Munro Ferencz
Wickens Nestle
Julie Stenseth
Clifford Rim
Isabel Bowley
Faith Gillian
Sinclair Waycott
Rodrigues Campain
Wickens Nestle
Morrow Ruta
Cody Saylors
Morrow Ruta
IdCountryDate
1000Canada2026-04-22
1001Canada2026-03-27
1002United Kingdom2026-04-25
1003Japan2026-04-05
1004Spain2026-04-18
1005Brazil2026-04-21
1006Argentina2026-04-21
1007Australia2026-04-24
1008Brazil2026-04-14
1009Brazil2026-04-11
1010Germany2026-04-25
1011Argentina2026-04-13
1012Brazil2026-03-29
1013France2026-04-13
1014Italy2026-04-15
1015Argentina2026-04-21
1016Brazil2026-03-30
1017Argentina2026-04-06
1018France2026-04-21
1019India2026-04-20
1020Japan2026-03-29
1021Japan2026-04-07
1022Japan2026-03-27
1023France2026-04-09
1024Italy2026-04-19
1025India2026-04-02
1026Argentina2026-03-27
1027Russia2026-04-08
1028Canada2026-04-08
1029Germany2026-04-06
1030Germany2026-04-12
1031Brazil2026-04-14
1032France2026-03-31
1033Brazil2026-04-20
1034Russia2026-04-11
1035India2026-04-13
1036Italy2026-04-09
1037India2026-04-25
1038Australia2026-04-24
1039Spain2026-04-24
1040Russia2026-03-31
1041Japan2026-04-05
1042United Kingdom2026-04-18
1043Brazil2026-04-04
1044Japan2026-04-18
1045Spain2026-04-20
1046Australia2026-04-09
1047India2026-03-31
1048Brazil2026-03-30
1049Japan2026-03-29

On-Demand Data

NameIdCountryDate
Emily Whobrey1000Canada2026-03-28
Wickens Nestle1001Germany2026-04-24
Costa Dilliard1002Brazil2026-04-08
Salvatore Stockham1003Russia2026-04-17
Jeanfrancois Venere1004United Kingdom2026-04-10
Costa Dilliard1005Russia2026-03-30
Munro Ferencz1006United Kingdom2026-03-28
Nicolas Iturbide1007India2026-04-06
Mujtaba Nicka1008Brazil2026-04-23
Mujtaba Nicka1009Germany2026-04-05
Tony Foller1010Australia2026-04-20
Emily Whobrey1011United Kingdom2026-04-20
Arvin Albares1012Spain2026-04-20
Isabel Bowley1013Japan2026-04-19
Munro Ferencz1014India2026-04-11
Julie Stenseth1015Canada2026-04-16
Kaitlin Ostrosky1016France2026-03-28
Greenwood Bolognia1017Russia2026-04-25
Kaitlin Ostrosky1018India2026-04-18
Rodrigues Campain1019Italy2026-03-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony FollerJapanAsiya Javayant RENEWAL
Aika InouyeJapanIoni Bowcher NEW
Jeanfrancois VenereJapanXuxue Feng QUALIFIED
Greenwood BologniaJapanBernardo Dominic RENEWAL
Leon OldroydBrazilIoni Bowcher NEW
Deepesh ChuiArgentinaStephen Shaw PROPOSAL
Stacey MacleadFranceOnyama Limba PROPOSAL
Claire TollnerItalyXuxue Feng QUALIFIED
Francesco ShinkoFranceAmy Elsner NEGOTIATION
Murillo MaletCanadaIoni Bowcher PROPOSAL
Costa DilliardGermanyStephen Shaw PROPOSAL
Sinclair WaycottRussiaBernardo Dominic UNQUALIFIED
Misaki RoysterIndiaIoni Bowcher UNQUALIFIED
Julie StensethUnited KingdomBernardo Dominic QUALIFIED
Adams MorascaArgentinaElwin Sharvill PROPOSAL
Nicolas IturbideItalyStephen Shaw NEW
Francesco ShinkoFranceStephen Shaw PROPOSAL
David DarakjyItalyAmy Elsner RENEWAL
Stacey MacleadJapanIoni Bowcher QUALIFIED
Claire TollnerCanadaAsiya Javayant NEW
Salvatore StockhamArgentinaAmy Elsner QUALIFIED
Octavia MaletRussiaAnna Fali RENEWAL
Stacey MacleadJapanElwin Sharvill RENEWAL
Claire TollnerSpainElwin Sharvill NEW
Mayumi KolmetzBrazilOnyama Limba UNQUALIFIED
Isabel BowleyAustraliaStephen Shaw QUALIFIED
Nicolas IturbideJapanBernardo Dominic UNQUALIFIED
David DarakjyUnited KingdomAsiya Javayant RENEWAL
Aruna FigeroaFranceAnna Fali QUALIFIED
Silvio SlusarskiIndiaAnna Fali NEGOTIATION
Smith GlickIndiaBernardo Dominic PROPOSAL
Nicolas IturbideBrazilAmy Elsner NEW
Silvio SlusarskiBrazilAsiya Javayant PROPOSAL
Faith GillianGermanyOnyama Limba RENEWAL
Leon OldroydCanadaAmy Elsner PROPOSAL
Cody SaylorsCanadaAnna Fali RENEWAL
Mujtaba NickaAustraliaBernardo Dominic NEW
Salvatore StockhamAustraliaIoni Bowcher UNQUALIFIED
Ricardo GauchoArgentinaAmy Elsner PROPOSAL
Salvatore StockhamFranceBernardo Dominic 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>