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
Nicolas IturbideFranceIoni Bowcher UNQUALIFIED
Aditya KuskoArgentinaBernardo Dominic QUALIFIED
James ButtItalyIoni Bowcher NEW
Morrow RutaJapanAmy Elsner RENEWAL
Ivar PaprockiItalyAnna Fali NEW
David DarakjyItalyStephen Shaw RENEWAL
Darci PoquetteGermanyOnyama Limba NEGOTIATION
Emily WhobreyArgentinaElwin Sharvill NEGOTIATION
Arvin AlbaresFranceOnyama Limba UNQUALIFIED
Greenwood BologniaJapanIoni Bowcher NEW
Claire TollnerIndiaAnna Fali NEGOTIATION
Arvin AlbaresArgentinaOnyama Limba UNQUALIFIED
Maisha RulapaughUnited KingdomElwin Sharvill UNQUALIFIED
Maria MarrierAustraliaElwin Sharvill PROPOSAL
Leja CaldareraSpainElwin Sharvill NEGOTIATION
Maria MarrierGermanyStephen Shaw PROPOSAL
Julie StensethAustraliaXuxue Feng PROPOSAL
Izzy GarufiCanadaAsiya Javayant NEW
Jeanfrancois VenereItalyAmy Elsner NEGOTIATION
Francesco ShinkoJapanOnyama Limba QUALIFIED
Izzy GarufiJapanAmy Elsner RENEWAL
Faith GillianSpainBernardo Dominic NEW
Jennifer AmigonGermanyStephen Shaw PROPOSAL
Kaitlin OstroskyGermanyOnyama Limba NEGOTIATION
Aditya KuskoSpainIoni Bowcher NEW
Arvin AlbaresRussiaAnna Fali UNQUALIFIED
Maisha RulapaughJapanAsiya Javayant NEGOTIATION
Rodrigues CampainSpainAsiya Javayant QUALIFIED
Misaki RoysterSpainXuxue Feng PROPOSAL
Wickens NestleIndiaOnyama Limba PROPOSAL
Aditya KuskoUnited KingdomIoni Bowcher QUALIFIED
Leja CaldareraJapanIoni Bowcher RENEWAL
Jeanfrancois VenereGermanyAmy Elsner UNQUALIFIED
Stacey MacleadCanadaAnna Fali NEGOTIATION
Stacey MacleadSpainAmy Elsner NEW
Mujtaba NickaGermanyAmy Elsner UNQUALIFIED
Ashley DoeRussiaElwin Sharvill NEW
Kadeem FlosiGermanyXuxue Feng NEW
Costa DilliardGermanyIoni Bowcher PROPOSAL
Arvin AlbaresUnited KingdomStephen Shaw UNQUALIFIED
Francesco ShinkoGermanyOnyama Limba NEGOTIATION
Ivar PaprockiRussiaIvan Magalhaes RENEWAL
Francesco ShinkoIndiaOnyama Limba NEGOTIATION
Izzy GarufiFranceAsiya Javayant UNQUALIFIED
Leon OldroydAustraliaAsiya Javayant NEW
Sinclair WaycottArgentinaIoni Bowcher UNQUALIFIED
Jennifer AmigonArgentinaAsiya Javayant UNQUALIFIED
Misaki RoysterRussiaOnyama Limba NEGOTIATION
Jeanfrancois VenereSpainElwin Sharvill NEW
Mayumi KolmetzItalyAnna Fali PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Adams MorascaRussiaIoni Bowcher NEW
Stacey MacleadArgentinaAnna Fali PROPOSAL
Emily WhobreyIndiaAmy Elsner RENEWAL
Salvatore StockhamCanadaXuxue Feng QUALIFIED
Deepesh ChuiItalyIoni Bowcher UNQUALIFIED
Deepesh ChuiBrazilIvan Magalhaes QUALIFIED
Leja CaldareraAustraliaIvan Magalhaes NEGOTIATION
Octavia MaletAustraliaIvan Magalhaes UNQUALIFIED
Alejandro PerinIndiaIvan Magalhaes QUALIFIED
Aruna FigeroaRussiaElwin Sharvill NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci PoquetteRussia2026-06-06Feiner Bros NEW56Elwin Sharvill
1001Adams MorascaBrazil2026-06-02Truhlar And Truhlar Attys QUALIFIED49Amy Elsner
1002Ricardo GauchoJapan2026-05-19Rangoni Of Florence PROPOSAL41Stephen Shaw
1003David DarakjyIndia2026-05-20Commercial Press NEGOTIATION12Amy Elsner
1004Leon OldroydAustralia2026-05-22Morlong Associates RENEWAL40Anna Fali
1005Kadeem FlosiJapan2026-05-24Truhlar And Truhlar Attys NEW63Amy Elsner
1006Maria MarrierIndia2026-05-23Morlong Associates PROPOSAL2Onyama Limba
1007Jennifer AmigonCanada2026-05-12Benton, John B Jr PROPOSAL66Asiya Javayant
1008Aruna FigeroaFrance2026-06-03Buckley Miller Wright NEW30Asiya Javayant
1009Chavez BriddickBrazil2026-05-18Rousseaux, Michael Esq NEW51Amy Elsner
1010Deepesh ChuiAustralia2026-05-27Benton, John B Jr NEGOTIATION10Onyama Limba
1011Jones VocelkaUnited Kingdom2026-05-09Buckley Miller Wright UNQUALIFIED23Stephen Shaw
1012Francesco ShinkoArgentina2026-06-05Commercial Press RENEWAL39Xuxue Feng
1013Jefferson SchemmerArgentina2026-05-16Feltz Printing Service PROPOSAL37Onyama Limba
1014Rodrigues CampainArgentina2026-05-14Printing Dimensions QUALIFIED31Xuxue Feng
1015Jefferson SchemmerJapan2026-05-23Chemel, James L Cpa NEGOTIATION84Stephen Shaw
1016Kaitlin OstroskySpain2026-06-05Chemel, James L Cpa QUALIFIED13Ioni Bowcher
1017Maria MarrierFrance2026-06-05Commercial Press PROPOSAL70Bernardo Dominic
1018Misaki RoysterItaly2026-06-05Printing Dimensions PROPOSAL80Stephen Shaw
1019Jennifer AmigonJapan2026-05-17Chapman, Ross E Esq UNQUALIFIED54Amy Elsner
1020Emily WhobreyFrance2026-05-23Chapman, Ross E Esq RENEWAL81Ioni Bowcher
1021Octavia MaletArgentina2026-06-03Printing Dimensions NEGOTIATION20Ivan Magalhaes
1022Octavia MaletAustralia2026-05-23Truhlar And Truhlar Attys QUALIFIED43Asiya Javayant
1023Deepesh ChuiCanada2026-05-31Printing Dimensions RENEWAL0Bernardo Dominic
1024Greenwood BologniaSpain2026-05-15Morlong Associates NEGOTIATION93Anna Fali
1025Darci PoquetteUnited Kingdom2026-05-15King, Christopher A Esq UNQUALIFIED62Amy Elsner
1026Maria MarrierArgentina2026-06-01Chanay, Jeffrey A Esq NEW5Asiya Javayant
1027Octavia MaletBrazil2026-05-18Morlong Associates UNQUALIFIED47Anna Fali
1028Kadeem FlosiJapan2026-06-06Printing Dimensions NEGOTIATION54Bernardo Dominic
1029Jennifer AmigonArgentina2026-06-05Dorl, James J Esq NEGOTIATION23Elwin Sharvill
1030Kaitlin OstroskyBrazil2026-05-16Chanay, Jeffrey A Esq QUALIFIED84Ioni Bowcher
1031Claire TollnerAustralia2026-06-03Truhlar And Truhlar Attys UNQUALIFIED66Ioni Bowcher
1032Rodrigues CampainUnited Kingdom2026-05-31Feltz Printing Service NEGOTIATION3Asiya Javayant
1033Johnson SergiFrance2026-05-10Buckley Miller Wright NEGOTIATION4Ioni Bowcher
1034Octavia MaletSpain2026-05-17Buckley Miller Wright RENEWAL14Anna Fali
1035Cody SaylorsArgentina2026-05-29Buckley Miller Wright QUALIFIED20Ivan Magalhaes
1036Emily WhobreyGermany2026-05-26Printing Dimensions UNQUALIFIED43Asiya Javayant
1037Ivar PaprockiBrazil2026-06-06Printing Dimensions NEW15Amy Elsner
1038Smith GlickAustralia2026-05-10Commercial Press PROPOSAL1Xuxue Feng
1039Ashley DoeGermany2026-05-31King, Christopher A Esq PROPOSAL13Onyama Limba
1040Arvin AlbaresRussia2026-06-06Morlong Associates QUALIFIED8Elwin Sharvill
1041Antonio CaudyJapan2026-06-04Rangoni Of Florence UNQUALIFIED18Amy Elsner
1042Izzy GarufiFrance2026-05-13Truhlar And Truhlar Attys UNQUALIFIED36Anna Fali
1043Ivar PaprockiItaly2026-05-14Chanay, Jeffrey A Esq RENEWAL3Asiya Javayant
1044Smith GlickIndia2026-05-21Feiner Bros NEGOTIATION98Stephen Shaw
1045Salvatore StockhamSpain2026-05-25Commercial Press UNQUALIFIED69Bernardo Dominic
1046Ivar PaprockiGermany2026-05-16Commercial Press RENEWAL94Elwin Sharvill
1047Munro FerenczAustralia2026-05-30Chapman, Ross E Esq RENEWAL40Elwin Sharvill
1048Faith GillianArgentina2026-05-24Chanay, Jeffrey A Esq NEGOTIATION8Ivan Magalhaes
1049Leon OldroydCanada2026-06-01Feiner Bros NEGOTIATION54Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Mujtaba NickaBrazilAsiya Javayant UNQUALIFIED
Mayumi KolmetzBrazilAnna Fali RENEWAL
Darci PoquetteUnited KingdomAnna Fali UNQUALIFIED
Julie StensethArgentinaIvan Magalhaes UNQUALIFIED
Ricardo GauchoCanadaAmy Elsner NEGOTIATION
Leja CaldareraIndiaStephen Shaw NEW
Cody SaylorsFranceAnna Fali UNQUALIFIED
Antonio CaudySpainBernardo Dominic PROPOSAL
Maisha RulapaughBrazilAmy Elsner NEGOTIATION
Isabel BowleyCanadaElwin Sharvill NEGOTIATION
Cody SaylorsAustraliaXuxue Feng RENEWAL
Maisha RulapaughGermanyIoni Bowcher QUALIFIED
Isabel BowleyIndiaElwin Sharvill NEGOTIATION
Nicolas IturbideUnited KingdomAnna Fali NEGOTIATION
Emily WhobreyCanadaXuxue Feng UNQUALIFIED
Izzy GarufiSpainElwin Sharvill QUALIFIED
Cody SaylorsGermanyBernardo Dominic PROPOSAL
Murillo MaletBrazilXuxue Feng UNQUALIFIED
Francesco ShinkoBrazilXuxue Feng QUALIFIED
Maria MarrierBrazilXuxue Feng NEGOTIATION
Ricardo GauchoUnited KingdomIoni Bowcher RENEWAL
Sinclair WaycottSpainOnyama Limba PROPOSAL
Silvio SlusarskiJapanBernardo Dominic NEGOTIATION
Misaki RoysterJapanIoni Bowcher UNQUALIFIED
Tony FollerAustraliaAsiya Javayant NEW
Arvin AlbaresGermanyAsiya Javayant PROPOSAL
Julie StensethArgentinaIoni Bowcher PROPOSAL
Greenwood BologniaUnited KingdomAnna Fali NEW
Leon OldroydUnited KingdomIoni Bowcher RENEWAL
Juan WieserIndiaIvan Magalhaes QUALIFIED
Octavia MaletFranceStephen Shaw PROPOSAL
Aika InouyeAustraliaAsiya Javayant PROPOSAL
Aika InouyeArgentinaXuxue Feng QUALIFIED
Ivar PaprockiRussiaAsiya Javayant NEW
Claire TollnerIndiaXuxue Feng NEW
Izzy GarufiUnited KingdomAnna Fali QUALIFIED
Sinclair WaycottIndiaOnyama Limba NEW
Leja CaldareraItalyElwin Sharvill PROPOSAL
Jones VocelkaRussiaAmy Elsner RENEWAL
Aditya KuskoBrazilXuxue Feng PROPOSAL
Murillo MaletJapanIvan Magalhaes PROPOSAL
Ivar PaprockiFranceIoni Bowcher NEGOTIATION
Jeanfrancois VenereBrazilAsiya Javayant NEGOTIATION
Darci PoquetteSpainBernardo Dominic PROPOSAL
Costa DilliardItalyAsiya Javayant UNQUALIFIED
Munro FerenczSpainAnna Fali UNQUALIFIED
Salvatore StockhamUnited KingdomElwin Sharvill QUALIFIED
Smith GlickSpainOnyama Limba NEGOTIATION
Octavia MaletJapanStephen Shaw NEW
Mayumi KolmetzFranceBernardo Dominic QUALIFIED
Frozen Columns
Name
Morrow Ruta
Octavia Malet
Ricardo Gaucho
Ashley Doe
Wickens Nestle
Deepesh Chui
Maisha Rulapaugh
Antonio Caudy
Greenwood Bolognia
Chavez Briddick
Faith Gillian
Nicolas Iturbide
Cody Saylors
Leon Oldroyd
Maria Marrier
Jennifer Amigon
Adams Morasca
Jefferson Schemmer
Jones Vocelka
Aruna Figeroa
Jefferson Schemmer
Tony Foller
Jefferson Schemmer
Stacey Maclead
Leja Caldarera
Maria Marrier
Octavia Malet
Kaitlin Ostrosky
Leon Oldroyd
Emily Whobrey
David Darakjy
Clifford Rim
Francesco Shinko
Clifford Rim
Tony Foller
Maria Marrier
Ashley Doe
Jeanfrancois Venere
Claire Tollner
Adams Morasca
Costa Dilliard
Cody Saylors
Misaki Royster
Jones Vocelka
Claire Tollner
Silvio Slusarski
Claire Tollner
Faith Gillian
Jeanfrancois Venere
Cody Saylors
IdCountryDate
1000United Kingdom2026-05-10
1001Argentina2026-05-13
1002Italy2026-05-14
1003France2026-05-24
1004Brazil2026-05-08
1005Australia2026-05-17
1006Australia2026-05-09
1007France2026-05-14
1008France2026-05-15
1009Russia2026-05-12
1010Argentina2026-05-17
1011United Kingdom2026-05-15
1012Brazil2026-05-11
1013Spain2026-05-13
1014Argentina2026-05-10
1015United Kingdom2026-05-19
1016Canada2026-05-18
1017Canada2026-06-05
1018Italy2026-05-23
1019India2026-05-09
1020Canada2026-05-14
1021India2026-05-18
1022Australia2026-05-16
1023Germany2026-06-02
1024Germany2026-05-08
1025Japan2026-05-13
1026Australia2026-06-01
1027Germany2026-05-26
1028Italy2026-05-13
1029France2026-06-01
1030Italy2026-05-31
1031India2026-05-25
1032Italy2026-06-06
1033India2026-05-08
1034Brazil2026-06-02
1035Japan2026-05-15
1036Canada2026-05-14
1037France2026-06-01
1038India2026-05-23
1039Italy2026-06-03
1040Japan2026-05-27
1041Italy2026-05-09
1042United Kingdom2026-05-29
1043India2026-05-18
1044Spain2026-05-25
1045Japan2026-05-18
1046Italy2026-06-02
1047Russia2026-05-31
1048United Kingdom2026-05-20
1049France2026-05-17

On-Demand Data

NameIdCountryDate
Cody Saylors1000India2026-05-31
Jefferson Schemmer1001United Kingdom2026-05-19
Nicolas Iturbide1002Germany2026-05-22
Aruna Figeroa1003Argentina2026-05-19
Faith Gillian1004Germany2026-05-21
Darci Poquette1005Germany2026-05-17
Cody Saylors1006Spain2026-05-11
Jefferson Schemmer1007Germany2026-05-16
Maria Marrier1008United Kingdom2026-05-15
Aruna Figeroa1009Russia2026-06-02
Kadeem Flosi1010Brazil2026-05-18
Clifford Rim1011India2026-05-10
Kadeem Flosi1012Italy2026-05-12
Smith Glick1013Argentina2026-05-16
Silvio Slusarski1014India2026-05-25
Ricardo Gaucho1015France2026-05-27
Jennifer Amigon1016United Kingdom2026-05-26
Kaitlin Ostrosky1017United Kingdom2026-05-08
Darci Poquette1018Germany2026-06-06
Cody Saylors1019Japan2026-05-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois VenereBrazilBernardo Dominic NEW
Costa DilliardSpainIvan Magalhaes PROPOSAL
Salvatore StockhamRussiaIoni Bowcher RENEWAL
Munro FerenczAustraliaIoni Bowcher NEGOTIATION
Smith GlickCanadaAmy Elsner NEW
Rodrigues CampainAustraliaAmy Elsner NEGOTIATION
Stacey MacleadIndiaElwin Sharvill RENEWAL
Maria MarrierJapanElwin Sharvill UNQUALIFIED
Jones VocelkaUnited KingdomXuxue Feng UNQUALIFIED
Jones VocelkaCanadaAsiya Javayant UNQUALIFIED
Clifford RimBrazilStephen Shaw PROPOSAL
Aika InouyeGermanyAsiya Javayant QUALIFIED
Morrow RutaItalyXuxue Feng PROPOSAL
Nicolas IturbideAustraliaAsiya Javayant QUALIFIED
Clifford RimIndiaElwin Sharvill NEW
Emily WhobreyUnited KingdomAnna Fali UNQUALIFIED
Kadeem FlosiGermanyAnna Fali NEGOTIATION
Smith GlickFranceIoni Bowcher RENEWAL
Aditya KuskoJapanElwin Sharvill PROPOSAL
Silvio SlusarskiIndiaXuxue Feng NEGOTIATION
Chavez BriddickJapanIoni Bowcher NEW
Kaitlin OstroskyItalyAnna Fali NEGOTIATION
Leja CaldareraItalyAnna Fali QUALIFIED
Ivar PaprockiCanadaOnyama Limba UNQUALIFIED
Rodrigues CampainFranceIvan Magalhaes RENEWAL
Adams MorascaCanadaXuxue Feng NEGOTIATION
Kaitlin OstroskyJapanOnyama Limba QUALIFIED
Jefferson SchemmerArgentinaXuxue Feng UNQUALIFIED
Kaitlin OstroskySpainElwin Sharvill RENEWAL
Munro FerenczFranceIvan Magalhaes NEW
Johnson SergiArgentinaBernardo Dominic QUALIFIED
Salvatore StockhamFranceAsiya Javayant PROPOSAL
Tony FollerBrazilIvan Magalhaes NEGOTIATION
Stacey MacleadJapanAsiya Javayant NEW
Maria MarrierUnited KingdomXuxue Feng PROPOSAL
Izzy GarufiFranceAnna Fali NEGOTIATION
Izzy GarufiGermanyIoni Bowcher NEW
Aditya KuskoIndiaStephen Shaw NEW
Misaki RoysterGermanyXuxue Feng NEW
Ivar PaprockiIndiaStephen Shaw 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>