Skip to main content
Skip table of contents

Beispiel für Paging

Folgendes Beispiel enthält eine List Component mit einem Technical Process und einer Properties-Definition.

Das folgende Beispiel ist nur ein Beispiel, um das Prinzip von Paging zu veranschaulichen, es darf nicht als Best Practice angesehen werden.

XML
<ListComponent name="Paging" path="Paging" displayName="Paging" process="fillListProcess.wrf" default="true">
	<Properties>
		<Property name="List" type="Complex">
			<Property name="Description" type="String" displayName="Description"/>
			<Property name="Id" type="Integer" displayName="Id"/>
		</Property>
	</Properties>
	<Columns>
		<Column value="#List.Id" />
		<Column value="#List.Description" />
	</Columns>
</ListComponent>

In diesem Beispiel gibt es eine XML-Datei als Datenquelle, die 67 Einträge enthält.:

dataSource.xml
XML
<?xml version="1.0" encoding="UTF-8"?>
<List>
	<Description>Value</Description>
	<Id>0</Id>
	...
	<Description>Value</Description>
	<Id>66</Id>
</List>

Um die Anfrage zu verarbeiten und nur die Einträge zu erhalten, die benötigt werden, muss ein Technical Process entworfen werden:

image-20240910-111301.png

Zunächst werden in diesem Technical Process die Datenquelle und die Anfrage zusammengefügt, damit sie im Folgenden in einem Mapping verarbeitet werden können.

 Das Mapping sieht folgendermaßen aus:

processRequest.xsl
XML
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output media-type="text/xml" method="xml"/>
  <xsl:template match="/">
    <OkList>
      <xsl:attribute name="size" select="count(Merge/List/Id)"/>
      <xsl:for-each select="Merge/List/Id">
        <xsl:if test="number(Id)>=/Merge/Search/@offset and number(Id)< /Merge/Search/@offset+/Merge/Search/@limit">
          <List>
            <Description>
              <xsl:value-of select="Description"/>
            </Description>
            <Id>
              <xsl:value-of select="Id"/>
            </Id>
          </List>
        </xsl:if>
      </xsl:for-each>
    </OkList>
  </xsl:template>
</xsl:stylesheet>

Das Mapping verarbeitet die Angaben offset und limit aus der Anfrage (/Merge/Search/@offset bzw. /Merge/Search/@limit) und sortiert die Einträge aus, die diese Bedingungen nicht erfüllen. Für die Einträge, die die Bedingungen erfüllen, wird ein Datenmodell mit <OkList> als Wurzelelement generiert, die von Web App gelesen werden kann. Die gesamte Anzahl der Einträge in der Liste wird mit dem Attribut size zu <OkList> hinzugefügt. Wenn nun in der List Component gescrollt wird, weiß die Component, dass es mehr Einträge gibt, als angezeigt werden. Diese Einträge werden mit einer neuen Anfrage mit anderem Offset geladen.

image-20240910-111353.png

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.