Aangepaste formulieren valideren de invoer die u in velden opgeeft op basis van vooraf ingestelde validatiecriteria. De validatiecriteria verwijzen naar de aanvaardbare invoerwaarden voor velden in een adaptieve vorm. U kunt de validatiecriteria instellen op basis van de gegevensbron die u gebruikt bij het adaptieve formulier. Als u bijvoorbeeld RESTful-webservices gebruikt als gegevensbron, kunt u de validatiecriteria definiëren in een Swagger-definitiebestand.
Als de invoerwaarden aan de validatiecriteria voldoen, worden de waarden naar de gegevensbron verzonden. Anders wordt een foutbericht weergegeven in het adaptieve formulier.
Op dezelfde manier kunnen adaptieve formulieren nu worden geïntegreerd met aangepaste services om gegevensvalidaties uit te voeren. Als de invoerwaarden niet voldoen aan de validatiecriteria en het foutbericht dat de server retourneert, de standaardberichtindeling heeft, worden de foutberichten in het formulier op veldniveau weergegeven.
Als de invoerwaarden niet voldoen aan de validatiecriteria en het foutbericht voor servervalidatie niet in de standaardberichtindeling is, bieden de adaptieve formulieren een mechanisme om de foutberichten voor validatie om te zetten in een standaardnotatie, zodat ze op veldniveau in het formulier worden weergegeven. U kunt het foutbericht op een van de volgende twee manieren transformeren in de standaardindeling:
In dit artikel wordt de standaardindeling beschreven voor de foutberichten voor validatie en de instructies voor het omzetten van de foutberichten van een aangepaste in de standaardindeling.
De adaptieve formulieren geven de fouten op veldniveau weer als de foutberichten voor servervalidatie de volgende standaardnotatie hebben:
{
errorCausedBy : "SERVER_SIDE_VALIDATION/SERVICE_INVOCATION_FAILURE"
errors : [
{
somExpression : <somexpr>
errorMessage / errorMessages : <validationMsg> / [<validationMsg>, <validationMsg>]
}
]
originCode : <target error Code>
originMessage : <unstructured error message returned by service>
}
Waar:
errorCausedBy
beschrijft de reden van mislukkingerrors
de SOM-expressie vermelden van de velden waarvoor de validatiecriteria niet zijn nageleefd, samen met het foutbericht voor de validatieoriginCode
bevat de foutcode die door de externe service wordt geretourneerdoriginMessage
bevat de onbewerkte foutgegevens die door de externe service worden geretourneerdAls het foutbericht voor servervalidatie niet in de standaardindeling wordt weergegeven, kunt u asynchrone verzending inschakelen en een aangepaste fouthandler toevoegen bij het verzenden van het formulier om het bericht om te zetten in een standaardindeling.
Voordat u een aangepaste handler toevoegt, moet u het adaptieve formulier configureren voor asynchrone verzending. Voer de volgende stappen uit:
Selecteer in de modus Aangepast formulier het object Form Container en tik op om de eigenschappen ervan te openen.
Schakel in de sectie Submission eigenschappen Use asynchronous submission in.
Selecteer Revalidate on server om de waarden van de invoervelden op de server vóór verzending te valideren.
Selecteer de handeling Verzenden:
Tik om de eigenschappen op te slaan.
AEM Forms biedt offline succeshandlers en foutafhandelaars voor het verzenden van formulieren. Handlers zijn client-side functies die worden uitgevoerd op basis van de serverreactie. Wanneer een formulier wordt verzonden, worden de gegevens voor validatie naar de server verzonden, die een reactie op de client retourneert met informatie over de gebeurtenis 'success' of 'error' voor de verzending. De informatie wordt als parameters doorgegeven aan de relevante handler om de functie uit te voeren.
Voer de volgende stappen uit om aangepaste fouthandler toe te voegen bij het verzenden van aangepaste formulieren:
Hieronder volgt een voorbeeldcode voor het omzetten van een aangepaste foutstructuur in de standaardfoutstructuur:
var data = $event.data;
var som_map = {
"id": "guide[0].guide1[0].guideRootPanel[0].Pet[0].id_1[0]",
"name": "guide[0].guide1[0].guideRootPanel[0].Pet[0].name_2[0]",
"status": "guide[0].guide1[0].guideRootPanel[0].Pet[0].status[0]"
};
var errorJson = {};
errorJson.errors = [];
if (data) {
if (data.originMessage) {
var errorData;
try {
errorData = JSON.parse(data.originMessage);
} catch (err) {
// not in json format
}
if (errorData) {
Object.keys(errorData).forEach(function(key) {
var som_key = som_map[key];
if (som_key) {
var error = {};
error.somExpression = som_key;
error.errorMessage = errorData[key];
errorJson.errors.push(error);
}
});
}
window.guideBridge.handleServerValidationError(errorJson);
} else {
window.guideBridge.handleServerValidationError(data);
}
}
In var som_map
wordt de SOM-expressie weergegeven van de adaptieve formuliervelden die u in de standaardindeling wilt omzetten. U kunt de SOM-expressie van elk veld in een adaptief formulier weergeven door op het veld te tikken en View SOM Expression te selecteren.
Met behulp van deze aangepaste fouthandler converteert het aangepaste formulier de velden in var som_map
naar de standaardindeling voor foutberichten. Hierdoor worden de berichten met validatiefouten in het adaptieve formulier op veldniveau weergegeven.
Voer de volgende stappen uit om foutenmanager toe te voegen om een structuur van de douanefout in de standaardfoutenstructuur om te zetten gebruikend de actie van de Redacteur van de Regel Invoke van de Dienst:
Als gevolg van deze regel worden de waarden die u invoert voor Naam, ID en Status velden gevalideerd, zodra het veld dat is gedefinieerd in stap 2 wordt gewijzigd en u het veld in het formulier verlaat.
Selecteer Code Editor van de drop-down lijst van de wijzesselectie.
Tik op Edit Code.
Verwijder de volgende regel uit de bestaande code:
guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs);
Schrijf een regel om de aangepaste foutstructuur om te zetten in de standaardfoutstructuur en tik Done om de regel op te slaan.
Voeg bijvoorbeeld de volgende voorbeeldcode aan het einde toe om een aangepaste foutstructuur om te zetten in de standaardfoutstructuur:
var errorHandler = function(jqXHR, data) {
var som_map = {
"id": "guide[0].guide1[0].guideRootPanel[0].Pet[0].id_1[0]",
"name": "guide[0].guide1[0].guideRootPanel[0].Pet[0].name_2[0]",
"status": "guide[0].guide1[0].guideRootPanel[0].Pet[0].status[0]"
};
var errorJson = {};
errorJson.errors = [];
if (data) {
if (data.originMessage) {
var errorData;
try {
errorData = JSON.parse(data.originMessage);
} catch (err) {
// not in json format
}
if (errorData) {
Object.keys(errorData).forEach(function(key) {
var som_key = som_map[key];
if (som_key) {
var error = {};
error.somExpression = som_key;
error.errorMessage = errorData[key];
errorJson.errors.push(error);
}
});
}
window.guideBridge.handleServerValidationError(errorJson);
} else {
window.guideBridge.handleServerValidationError(data);
}
}
};
guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, null, errorHandler);
In var som_map
wordt de SOM-expressie weergegeven van de adaptieve formuliervelden die u in de standaardindeling wilt omzetten. U kunt de SOM-expressie van elk veld in een adaptief formulier weergeven door op het veld te tikken en View SOM Expression in het menu More Opions (…) te selecteren.
Zorg ervoor dat u de volgende regel van de voorbeeldcode naar de aangepaste fouthandler kopieert:
guidelib.dataIntegrationUtils.executeOperation(operationInfo, inputs, outputs, null, errorHandler);
De executeOperation-API bevat de parameters null
en errorHandler
op basis van de nieuwe aangepaste fouthandler.
Met behulp van deze aangepaste fouthandler converteert het aangepaste formulier de velden in var som_map
naar de standaardindeling voor foutberichten. Hierdoor worden de berichten met validatiefouten in het adaptieve formulier op veldniveau weergegeven.