Sie sehen sich Hilfeinhalte der folgenden Version an:

Voraussetzungen

Für das Authoring eines adaptiven Formulars mit einem JSON-Schema als Formularmodell sind grundlegende Kenntnisse zu JSON-Schemas erforderlich. Es wird empfohlen, den folgenden Inhalt vor diesem Artikel durchzulesen.

Verwenden eines JSON-Schemas als Formularmodell

AEM Forms unterstützt die Erstellung eines adaptiven Formulars mit einem vorhandenen JSON-Schema als Formularmodell. Dieses JSON-Schema stellt die Struktur dar, in der Daten vom Back-End-System in Ihrem Unternehmen produziert oder genutzt werden. Das JSON-Schema, das Sie verwenden, sollte mit den Spezifikationen der Version 4 konform sein.  

Die Haupteigenschaften bei der Verwendung eines JSON-Schemas sind wie folgt:

  • Die Struktur der JSON wird als Baumstruktur in der Registerkarte für die Inhaltssuche im Authoring-Modus für ein adaptives Formular angezeigt. Sie können Elemente aus der JSON-Hierarchie in das adaptive Formular ziehen.
  • Sie können das Formular mit JSON, das mit dem zugehörigen Schema konform ist, vorausfüllen.
  • Bei der Übermittlung werden die vom Benutzer eingegebenen Daten in einem JSON-Format gesendet, das dem zugehörigen Schema entspricht.

Ein JSON-Schema besteht aus einfachen und komplexen Elementtypen. Die Elemente weisen Attribute auf, die dem Element Regeln hinzufügen. Wenn diese Elemente und Attribute in ein adaptives Formular gezogen werden, werden sie automatisch der entsprechenden Komponente des adaptiven Formulars zugeordnet.

Diese Zuordnung von JSON-Elementen zu Komponenten adaptiver Formulare ist wie folgt:

JSON-Element, -Eigenschaften oder -Attribute Komponente des adaptiven Formulars

Zeichenfolgen-Eigenschaften mit enum- und enumNames-Beschränkung.

Syntax,

 {

"type" : "string",

"Enum ": ["M", "F"]

"enumNames" : ["Male", "Female"]

}

 

Dropdown-Komponente:

  • Die in enumNames aufgeführten Werte werden im Dropdown-Feld angezeigt.
  • Die in enum aufgeführten Werte werden für die Berechnung verwendet.

Zeichenfolgen-Eigenschaft mit Formatbeschränkung. Z. B. E-Mail oder Datum.

Syntax,

{

"type" : "string",

"format": "email"

}

 

  • E-Mail-Komponente wird zugeordnet, wenn der Typ „Zeichenfolge“ lautet und das Format „E-Mail“.
  • Textfeld-Komponente mit Validierung wird zugeordnet, wenn der Typ „Zeichenfolge“ lautet und das Format „Hostname“.

{

"type" : "string",

}



Textfeld


Nummern-Eigenschaft
Numerisches Feld, Untertyp auf „nicht verankert“ eingestellt
Ganzzahl-Eigenschaft
Numerisches Feld, Untertyp auf „Ganzzahl“ eingestellt
Boolean-Eigenschaft
Schalter
Objekt-Eigenschaft
Bedienfeld
Array-Eigenschaft Wiederholbares Bedienfeld mit „min.“ und „max.“ gleich „minItems“ und „maxItems“. Nur homogene Arrays werden unterstützt. Daher muss die Elementbeschränkung ein Objekt sein, kein Array.
 

Allgemeine Schemaeigenschaften

Bei einem adaptiven Formular werden jedem generierten Feld im JSON-Schema verfügbare Informationen zugeordnet. Insbesondere:

  • Die title-Eigenschaft dient als Bezeichnung für die Komponenten des adaptiven Formulars.
  • Die description-Eigenschaft ist als lange Beschreibung für eine Komponente eines adaptiven Formulars festgelegt.
  • Die default-Eigenschaft dient als Ausgangswert eines adaptiven Formulars.
  • Die maxLength-Eigenschaft ist als maxlength-Attribut für die Textfeldkomponente festgelegt.
  • Die Eigenschaften „minimum“, „maximum“, „exclusiveMinimum“ und „exclusiveMaximum“ werden für Komponenten vom Typ „numerisches Feld“ verwendet.
  • Um Bereiche für eine DatePicker-Komponente zu unterstützen, werden die zusätzlichen JSON-Schemaeigenschaften „minDate“ und „maxDate“ bereitgestellt.
  • Mithilfe der Eigenschaften „minItems“ und „maxItems“ wird die Anzahl der Elemente/Felder eingeschränkt, die einer Bedienfeldkomponente hinzugefügt oder daraus entfernt werden können.
  • Die readOnly-Eigenschaft legt das Schreibschutzattribut einer Komponente eines adaptiven Formulars fest.
  • Die required-Eigenschaft kennzeichnet ein adaptives Formularfeld als obligatorisch, während im Fall eines Bedienfelds (wobei „type“ ein Objekt ist) die endgültigen übermittelten JSON-Daten Felder mit leerem Wert entsprechend dieses Objekts enthalten.
  • Die pattern-Eigenschaft ist als Validierungsmuster (regulärer Ausdruck) im adaptiven Formular festgelegt.

JSON-Beispielschema

Im Folgenden finden Sie ein Beispiel eines JSON-Schemas.

{
	"$schema": "http://json-schema.org/draft-04/schema#",
	"definitions": {
		"employee": {
			"type": "object",
			"properties": {
				"userName": {
					"type": "string"
				},
				"dateOfBirth": {
					"type": "string",
					"format": "date"
				},
				"email": {
					"type": "string",
					"format": "email"
				},
				"language": {
					"type": "string"
				},
				"personalDetails": {
					"$ref": "#/definitions/personalDetails"
				},
				"projectDetails": {
					"$ref": "#/definitions/projectDetails"
				}
			},
			"required": [
				"userName",
				"dateOfBirth",
				"language"
			]
		},
		"personalDetails": {
			"type": "object",
			"properties": {
				"GeneralDetails": {
					"$ref": "#/definitions/GeneralDetails"
				},
				"Family": {
					"$ref": "#/definitions/Family"
				},
				"Income": {
					"$ref": "#/definitions/Income"
				}
			}
		},
		"projectDetails": {
			"type": "array",
			"items": {
				"properties": {
					"name": {
						"type": "string"
					},
					"age": {
						"type": "number"
					},
					"projects": {
						"$ref": "#/definitions/projects"
					}
				}
			},
			"minItems": 1,
			"maxItems": 4
		},
		"projects": {
			"type": "array",
			"items": {
				"properties": {
					"name": {
						"type": "string"
					},
					"age": {
						"type": "number"
					},
					"projectsAdditional": {
						"$ref": "#/definitions/projectsAdditional"
					}
				}
			},
			"minItems": 1,
			"maxItems": 4
		},
		"projectsAdditional": {
			"type": "array",
			"items": {
				"properties": {
					"Additional_name": {
						"type": "string"
					},
					"Additional_areacode": {
						"type": "number"
					}
				}
			},
			"minItems": 1,
			"maxItems": 4
		},
		"GeneralDetails": {
			"type": "object",
			"properties": {
				"age": {
					"type": "number"
				},
				"married": {
					"type": "boolean"
				},
				"phone": {
					"type": "number",
					"aem:afProperties": {
						"sling:resourceType": "/libs/fd/af/components/guidetelephone",
						"guideNodeClass": "guideTelephone"
					}
				},
				"address": {
					"type": "string"
				}
			}
		},
		"Family": {
			"type": "object",
			"properties": {
				"spouse": {
					"$ref": "#/definitions/spouse"
				},
				"kids": {
					"$ref": "#/definitions/kids"
				}
			}
		},
		"Income": {
			"type": "object",
			"properties": {
				"monthly": {
					"type": "number"
				},
				"yearly": {
					"type": "number"
				}
			}
		},
		"spouse": {
			"type": "object",
			"properties": {
				"name": {
					"type": "string"
				},
				"Income": {
					"$ref": "#/definitions/Income"
				}
			}
		},
		"kids": {
			"type": "array",
			"items": {
				"properties": {
					"name": {
						"type": "string"
					},
					"age": {
						"type": "number"
					}
				}
			},
			"minItems": 1,
			"maxItems": 4
		}
	},
	"type": "object",
	"properties": {
		"employee": {
			"$ref": "#/definitions/employee"
		}
	}
}

Wiederverwendbare Schemadefinitionen

Definitionsschlüssel kennzeichnen wiederverwendbare Schemas. Die wiederverwendbaren Schemadefinitionen werden verwendet, um Fragmente zu erstellen. Dies geschieht ähnlich wie beim Identifizieren komplexer Typen in XSD. Ein JSON-Beispielschema mit Definitionen wird unten angezeigt:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
 
  "definitions": {
    "address": {
      "type": "object",
      "properties": {
        "street_address": { "type": "string" },
        "city":           { "type": "string" },
        "state":          { "type": "string" }
      },
      "required": ["street_address", "city", "state"]
    }
  },
 
  "type": "object",
 
  "properties": {
    "billing_address": { "$ref": "#/definitions/address" },
    "shipping_address": { "$ref": "#/definitions/address" }
  }
}

Das obige Beispiel definiert einen Kundendatensatz, bei dem jeder Kunde über eine Versand- und eine Rechnungsadresse verfügt. Die Struktur der beiden Adressen ist gleich: Straße, Stadt und Land. Daher sollten Sie die Adressen nicht duplizieren. Das erleichtert auch das Hinzufügen und Löschen von Feldern, wodurch zukünftige Änderungen einfach sind.

Vorkonfigurieren von Feldern in JSON-Schemadefinitionen

Mit der Eigenschaft aem:afProperties können Sie ein JSON-Schemafeld so vorkonfigurieren, dass es einer benutzerdefinierten Komponente des adaptiven Formulars zugeordnet wird. Ein Beispiel wird unten angezeigt:

{
    "properties": {
        "sizeInMB": {
            "type": "integer",
            "minimum": 16,
            "maximum": 512,
            "aem:afProperties" : {
                 "sling:resourceType" : "/apps/fd/af/components/guideTextBox",
                 "guideNodeClass" : "guideTextBox"
             }
        }
    },
    "required": [ "sizeInMB" ],
    "additionalProperties": false
}

Einschränken der gültigen Werte für eine Komponente eines adaptiven Formulars

Sie können die folgenden Einschränkungen zu JSON-Schemaelementen hinzufügen, um die Werte zu beschränken, die für eine Komponente eines adaptiven Formulars gültig sind:  

Schemaeigenschaft

Datentyp

Beschreibung

Komponente

maximum

Zeichenfolge

Gibt die Obergrenze für numerische Werte und Daten an. Standardmäßig ist der Höchstwert enthalten.

  • Numerisches Feld
  • Numerische Schritte
  • Datumsauswahl

Minimum

Zeichenfolge

Gibt die Untergrenze für numerische Werte und Daten an. Standardmäßig ist der Mindestwert enthalten.

  • Numerisches Feld
  • Numerische Schritte
  • Datumsauswahl

exclusiveMaximum

Boolesch

Wenn „true“, muss der numerische Wert oder das Datum, der/das in der Komponente des Formulars festgelegt ist, kleiner sein als der numerische Wert oder das Datum, der/das für die Eigenschaft „maximum“ angegeben ist.

Wenn „false“, muss der numerische Wert oder das Datum, der/das in der Komponente des Formulars festgelegt ist, kleiner oder gleich dem numerischen Wert oder Datum sein, der/das für die Eigenschaft „maximum“ angegeben ist.

  • Numerisches Feld
  • Numerische Schritte
  • Datumsauswahl

exclusiveMinimum

Boolesch

Wenn „true“, muss der numerische Wert oder das Datum, der/das in der Komponente des Formulars festgelegt ist, größer sein als der numerische Wert oder das Datum, der/das für die Eigenschaft „minimum“ angegeben ist.

Wenn „false“, muss der numerische Wert oder das Datum, der/das in der Komponente des Formulars festgelegt ist, größer oder gleich dem numerischen Wert oder Datum sein, der/das für die Eigenschaft „minimum“ angegeben ist.

  • Numerisches Feld
  • Numerische Schritte
  • Datumsauswahl

minLength

Zeichenfolge

Legt die zulässige Mindestanzahl von Zeichen in einer Komponente fest. Die minimale Länge muss größer oder gleich Null sein.

  • Textfeld
maxLength Zeichenfolge Legt die zulässige Höchstzahl von Zeichen in einer Komponente fest. Die maximale Länge muss größer oder gleich Null sein.
  • Textfeld

pattern

Zeichenfolge

Legt die Reihenfolge der Zeichen fest. Eine Komponente akzeptiert die Zeichen, wenn sie dem angegebenen Muster entsprechen.

Die Eigenschaft „pattern“ ist dem Überprüfungsmuster der entsprechenden Komponente des adaptiven Formulars zugeordnet.

  • Alle adaptiven Formulare, die einem XSD-Schema zugeordnet sind  
maxItems Zeichenfolge Gibt die maximale Anzahl von Elementen in einem Array an. Die maximale Anzahl von Elementen muss größer oder gleich Null sein.  
minItems Zeichenfolge Gibt die Mindestanzahl von Elementen in einem Array an. Die Mindestanzahl von Elementen muss größer oder gleich Null sein.  

Nicht unterstützte Konstrukte

Adaptive Formulare bieten keine Unterstützung für die folgenden JSON-Schemakonstrukte:

  • Null-Typ
  • Union-Typen wie „any“, „and“
  • OneOf, AnyOf, AllOf und NOT
  • Nur homogene Arrays werden unterstützt. Daher muss die Elementbeschränkung ein Array sein, kein Objekt.

Häufig gestellte Fragen

Warum kann ich nicht einzelne Elemente eines Teilformulars (Struktur aus einem komplexen Typ generiert) für wiederholbare Teilformulare ziehen (Wert von minOccours oder maxOccurs ist größer als 1)?

In einem wiederholbaren Teilformular müssen Sie das gesamte Teilformular verwenden. Wenn Sie nur einzelne Felder möchten, verwenden Sie die gesamte Struktur und löschen Sie unerwünschte Felder.

Ich habe eine lange komplexe Struktur in der Inhaltssuche. Wie kann ich ein bestimmtes Element suchen?

Es gibt zwei Optionen:

  • Blättern Sie durch die Baumstruktur
  • Verwenden Sie das Suchfeld, um ein Element zu finden

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie