Skip to content

feat: FORMS-25252 add server-side validation (SSV)#1902

Merged
rajatofficial merged 3 commits into
devfrom
feat/FORMS-25252-server-side-validation
Jun 24, 2026
Merged

feat: FORMS-25252 add server-side validation (SSV)#1902
rajatofficial merged 3 commits into
devfrom
feat/FORMS-25252-server-side-validation

Conversation

@rajatofficial

Copy link
Copy Markdown
Contributor
  • Add enableServerSideValidation checkbox and ssvCloudServicePath cloud service picker to the form container edit dialog (Submission tab)
  • SSV config path picker shown/hidden based on checkbox state (editDialog.js)
  • Read enableServerSideValidation and ssvCloudServicePath from JCR in AdaptiveFormSubmitServlet; call Adobe I/O endpoint before submit action runs
  • On SSV failure respond HTTP 400 with SSV_VALIDATION_ERROR body and x-aem-error-pass header so the client can show inline field errors
  • Expose formModel on globals in formcontainerview.js so defaultSubmitErrorHandler can call visit() / markAsInvalid() without proxy restrictions
  • Implement SSV-aware defaultSubmitErrorHandler in customFunctions.js; delegates to cf.defaultSubmitErrorHandler for non-SSV failures
  • Guard ssvCloudServicePath from being exported to form JSON (security)
  • Add ReservedProperties constants for both new JCR property names
  • Add FormContainerImplTest assertions verifying SSV props are excluded from JSON
  • Add Jest tests for SSV error handler logic

Description

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • I have signed the Adobe Open Source CLA.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes and the overall coverage did not decrease.
  • All unit tests pass on CircleCi.
  • I ran all tests locally and they pass.

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@github-actions github-actions Bot force-pushed the feat/FORMS-25252-server-side-validation branch from 10d09e8 to 3d10aa4 Compare June 11, 2026 12:35
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
page-has-heading-one moderate
target-size serious

@rajatofficial rajatofficial changed the title feat(af-core): FORMS-25252 add server-side validation (SSV) feat: FORMS-25252 add server-side validation (SSV) Jun 11, 2026
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

2 similar comments
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

submitProps.computeIfAbsent(SS_SPREADSHEET, k -> new LinkedHashMap<String, Object>());
((Map<String, Object>) submitProps.get(SS_SPREADSHEET)).put(entry.getKey(), entry.getValue());
}
// SSV properties (enableServerSideValidation, ssvCloudServicePath) are intentionally

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: comment not required here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed.

granite:class="cmp-adaptiveform-container__enablessv"
name="./enableServerSideValidation"
text="Enable Server-Side Validation"
value="true"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think default value should be false

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes made it false.

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

1 similar comment
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

public static final String PN_SUBMIT_EMAIL_CC = "cc";
public static final String PN_SUBMIT_EMAIL_BCC = "bcc";
public static final String PN_SUBMIT_SPREADSHEETURL = "spreadsheetUrl";
public static final String PN_ENABLE_SERVER_SIDE_VALIDATION = "enableServerSideValidation";

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all OOTB properties should be prefixed with fd:

@rismehta rismehta Jun 15, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These properties should not be part of the model.json output since they are server side, there can be a use-case for EDS submit, that can be handled later

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are not part of model.json; these are just for internal code use.

</cui>
</uiSettings>
</thankYouMessage>
<enableServerSideValidation

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be hidden and only enabled if someone selects enable server side validation

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Discussed with Anurag and Sudhanshu that, in order to improve the archaic behaviour, we should keep only one dropdown with a default value of None.

jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/checkbox"
fieldLabel="Server-Side Validation"
fieldDescription="Call an Adobe I/O validator endpoint before the submit action runs."

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to have help article for users to understand how to create one

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes I will be creating a Doc for the customer.

let defaultSubmissionError = FormView.LanguageUtils.getTranslatedString(self.getLang(), "InternalFormSubmissionError");
const globals = {
form: self.getModel().getRuleNode(),
formModel: self.getModel(),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this required ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not required. Removed it.

<enableServerSideValidation
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/checkbox"
fieldLabel="Server-Side Validation"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we create a github clone so that users can refer that as sample to deploy Adobe IO action ? I want to make sure that they dont spend a lot of time doing this

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I will be creating one.

@rismehta rismehta left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check comments

@rismehta rismehta left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check comments

@rajatofficial rajatofficial force-pushed the feat/FORMS-25252-server-side-validation branch from 7b1c652 to 665f05d Compare June 16, 2026 05:02
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

1 similar comment
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
page-has-heading-one moderate
target-size serious

1 similar comment
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
page-has-heading-one moderate
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

1 similar comment
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@github-actions github-actions Bot force-pushed the feat/FORMS-25252-server-side-validation branch from b0589ab to e397c06 Compare June 18, 2026 13:20
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

3 similar comments
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
page-has-heading-one moderate
target-size serious

@codecov

codecov Bot commented Jun 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 7.31707% with 38 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...ternal/servlets/FormMetaDataDataSourceServlet.java 7.31% 37 Missing and 1 partial ⚠️

📢 Thoughts on this report? Let us know!

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

1 similar comment
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
page-has-heading-one moderate
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@rajatofficial rajatofficial force-pushed the feat/FORMS-25252-server-side-validation branch from 0068aba to a69124c Compare June 23, 2026 06:29
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

1 similar comment
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

}

private List<Resource> getCloudConfigsByGroup(SlingHttpServletRequest request, ResourceResolver resourceResolver) {
List<Resource> resources = new ArrayList<>();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is incorrect, we have helpers in cq-guides (addon) for such use-cases, you should re-use that

@rismehta rismehta left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving. but there are few unresolved comments, address them later

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
page-has-heading-one moderate
target-size serious

@rajatofficial rajatofficial force-pushed the feat/FORMS-25252-server-side-validation branch from 60d88c2 to 45900ec Compare June 24, 2026 09:44
@github-actions github-actions Bot force-pushed the feat/FORMS-25252-server-side-validation branch from 45900ec to b86b3ea Compare June 24, 2026 09:44
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

3 similar comments
@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@adobe-bot

Copy link
Copy Markdown

Accessibility Violations Found

Id Impact
aria-required-attr critical
empty-heading minor
label-title-only serious
target-size serious

@rajatofficial rajatofficial merged commit d8872b5 into dev Jun 24, 2026
7 of 8 checks passed
armaang1729 added a commit that referenced this pull request Jun 25, 2026
* FORMS-23760 : Added Table component support in Core Components  (#1879)

* added basic config files for the table component

* added .content.xml for the table component

* added edit toolbar for the table component _cq_editConfig.xml

* added table.html

* added basic css and js for the table authoring currently refering the dependencies which are declared in the content.xml

* added site clientlibs for the table component

* added basic config files for the tableheader

* added basic config files for the tablerow

* added site clientlibs for tableheader

* added clientlibs folder in the tablerow

* added the table component in examples folder along with cq_template

* added runtime dependencies in the runtime all for the table component

* replaced the tr elements from the div elements to fix the selecting issue

* added action configs in the edit toolbar for the table component

* added action configs for the table row and the tableroweditorhook.js for handling this

* removed the add row option from the tableHeaderRow

* updated the header cells from the textinput to text type in the templates

* added the addCol and deleteCol actions and also there handlers

* removed cell numbers from dynamic addition of the table cols and rows

* added the feature of repeatable panels to the table row at runtime

* added the replace feature for the tablecell to any component which is present

* removed the delete options from the table cells in the table row

* in this commit table tags have gone -> repeatable panels not working correctly here

* added files to fix the repeatative panels with the table tags

* fixed the repeatable rows with indexing

* changed the authoring from divs to tabletags sacirificing the touch ui for now

* fixed the touch ui with the table tags

* fixed the tablecell css having controls

* removed the tableeditor.css file

* added replace feature to the components of the table Header also

* fixed the refresh issue by adding authoring dialogs for table row and table header

* added cypress tests and collaterals for testing

* added sling folder for collaterals

* fixed the test cases

* fixed the content.xml

* fixed the failing testcases

* updated the year to 2026

* fixed the short and long description for the table component

* removed unsupported authoring from the table component

* refactored the table.html

* updated README for the table Component

* Resolved Conflicts

* added sorting feature for the table component

* enabled sorting button during authoring too

* added feature to disable/enable sorting on a particular column of the table

* added authoring options for sorting and column width

* added dor support for table component

* added dor testing

* added the feature of merge and split cell during runtime by adding colspan in publish html

* updated README for table, tableheader, tablerow

* added the feature for merge row cells and commented out the header cells merge feature

* added testing for second phase features

* fixed review comments 1

* fixed review comments 2

* fixed cypress tests

* fixed coverage

* fixed the sorting behaviour to improve the archaic behavior

* fixed cypress testing mergesplit feature

* fixed cypress testing

* moved .css changes from core component to theme canvas

---------

Co-authored-by: Armaan Gupta <armaang@Armaans-MacBook-Pro.local>

* FORMS-24585 AEP submission changes (#1911)

* Fix code formatting for FormContainerImpl.java (#1914)

* FORMS-24585 Adding sandboxname in config (#1917)

Co-authored-by: shraddhasingh683 <shraddhasingh683@gmail.com>

* Double MB fix in validation alert pop up for file size (#1918)

* file input upload error fix

* double MB java change reverted

---------

Co-authored-by: Rajat Khurana <rajatkhurana@adobe.com>

* feat: FORMS-25252 add server-side validation (SSV) (#1902)

* feat(af-core): FORMS-25252 add server-side validation (SSV) for form container

* fix(ssv): gate SSV dialog behind FT_FORMS-25252 feature toggle

* copy writing fixed for ssv config

---------

Co-authored-by: Rajat Khurana <rajatkhurana@adobe.com>

---------

Co-authored-by: Armaan Gupta <armaang@Armaans-MacBook-Pro.local>
Co-authored-by: shraddhasingh683 <shraddhasingh683@gmail.com>
Co-authored-by: anshikag-adobe <anshikag@adobe.com>
Co-authored-by: Rajat Khurana <30727855+rajatofficial@users.noreply.github.com>
Co-authored-by: Rajat Khurana <rajatkhurana@adobe.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants