{"id":46028,"date":"2017-06-20T15:31:58","date_gmt":"2017-06-20T10:01:58","guid":{"rendered":"http:\/\/www.tothenew.com\/blog\/?p=46028"},"modified":"2022-01-13T14:12:40","modified_gmt":"2022-01-13T08:42:40","slug":"tips-tricks-for-aem-6-2-form-development","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/tips-tricks-for-aem-6-2-form-development\/","title":{"rendered":"Tips &#038; Tricks for AEM 6.2 Form Development"},"content":{"rendered":"<p style=\"text-align: justify;\"><strong><span style=\"font-weight: 400;\">We often come across some tricks during the\u00a0<a title=\"AEM Development Services\" href=\"http:\/\/www.tothenew.com\/wcm\/cq-aem-development-consulting\">implementation of AEM components<\/a>, which are not documented anywhere and we spend a lot of time in applying these tricks to our problems. I got a\u00a0chance to work on a small proof of concept around AEM 6.2 Forms implementation, where I was exploring the OOTB Form components. I thought sharing few tricks would be helpful for developers who are working on AEM Forms.<\/span><\/strong><\/p>\n<h1 style=\"text-align: justify;\"><strong>I. Avoid Hyphen(-)\u00a0in Element name<\/strong><\/h1>\n<p><strong>Use case and expected implementation<\/strong><\/p>\n<p>The use case assigned to me was to create a Loan Form using AEM form components. Depending on the\u00a0end user\u2019s employment type (like salaried, business), the requirement was to show some specific fields. As depicted in the below images, &#8216;<em>Type of employment&#8217;<\/em>\u00a0is a drop-down and on selecting drop-down values, certain fields are shown.<\/p>\n<p style=\"text-align: justify;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-46030 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/19.png\" alt=\"1\" width=\"1286\" height=\"289\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/19.png 1286w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/19-300x67.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/19-1024x230.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/19-624x140.png 624w\" sizes=\"(max-width: 1286px) 100vw, 1286px\" \/><\/p>\n<p style=\"text-align: justify;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-46031 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/22.png\" alt=\"2\" width=\"1300\" height=\"487\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/22.png 1300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/22-300x112.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/22-1024x383.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/22-624x233.png 624w\" sizes=\"(max-width: 1300px) 100vw, 1300px\" \/><\/p>\n<p style=\"text-align: justify;\">The implementation approach which I followed was to use AEM form panels which contain\u00a0fields required to be rendered for a\u00a0particular type of employment. Then, using rule editor to write the rules for the same as depicted in the image below.<\/p>\n<p style=\"text-align: justify;\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-46032 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/32.png\" alt=\"3\" width=\"1301\" height=\"466\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/32.png 1301w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/32-300x107.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/32-1024x366.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/32-624x223.png 624w\" sizes=\"(max-width: 1301px) 100vw, 1301px\" \/><\/p>\n<p style=\"text-align: justify;\"><strong>Actual Implementation<\/strong>:<\/p>\n<p style=\"text-align: justify;\">So let\u2019s say, salaried and business are two panels containing the fields with element names &#8216;<em>salaried-panel&#8217;<\/em>\u00a0and &#8216;<em>business-panel&#8217;<\/em>\u00a0respectively.\u00a0As per Adobe&#8217;s documentation on <a href=\"https:\/\/helpx.adobe.com\/aem-forms\/6-2\/introduction-forms-authoring.html\">forms authoring<\/a>, the Element Name field accepts letters, numbers, hyphens (-), and underscores (_) only. Other special characters are not allowed, and element name should begin with an alphabet.<\/p>\n<p style=\"text-align: justify;\">The above-created rules to hide and show panels wouldn\u2019t work since the element name of the panels contain a hyphen(-). After removing the hyphen from element name, the expected functionality started working. We identified that using a hyphen in element name will impacts other functionalities too.<\/p>\n<h1 style=\"text-align: justify;\"><strong>II. Resolving Form Component\u00a0in JS<\/strong><\/h1>\n<p style=\"text-align: justify;\">During the\u00a0implementation of AEM Forms, sometimes it is required to resolve AEM forms component as an Object in JavaScript files to achieve the following tasks easily:<\/p>\n<ul style=\"text-align: justify;\">\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Enable\/Disable Component<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Get\/Set Component value<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Hide\/Show Panels<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Retrieve CRX properties values like jcr:path, name and resourceType <\/span><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Below mentioned are two ways to resolve Form component as an Object:<\/p>\n<ol style=\"text-align: justify;\">\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><strong>Using Guidebridge API<\/strong><br \/>\nIt is a recommended API by Adobe for AEM forms.<\/span><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">\u00a0For accessing <a href=\"https:\/\/helpx.adobe.com\/aem-forms\/6-2\/javascript-api\/GuideBridge.html\">GuideBridge API<\/a>, we get an Object name \u2018<em>guideBridge<\/em>\u2019 of type GuideBridge which is available globally in JS context, after the guideBridge script is loaded. There is a method of \u2018<em>guideBridge<\/em>\u2019 object &#8216;<i>resolveNode()&#8217;<\/i> with following definition: <i>GuideNode resolveNode(somExpression).<\/i><\/span><\/span><\/span><br \/>\nHere,\u00a0<a href=\"http:\/\/help.adobe.com\/en_US\/AEMForms\/6.1\/DesignerScriptingRef\/WS92d06802c76abadb-3e14850712a151d270d-7fd5.2.html\">somExpression<\/a>\u00a0is a string representing the reference syntax expression of the component, and it is unique to each component. The SOM Expression string can be obtained by right clicking on the component in Edit mode and then by selecting \u2018View SOM expression\u2019. \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0<img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-49000 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/06\/4.png\" alt=\"4\" width=\"1294\" height=\"570\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/06\/4.png 1294w, \/blog\/wp-ttn-blog\/uploads\/2017\/06\/4-300x132.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/06\/4-1024x451.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/06\/4-624x274.png 624w\" sizes=\"(max-width: 1294px) 100vw, 1294px\" \/><br \/>\nAfter getting the SOM expression, the component object can be resolved using the code below:<\/li>\n<\/ol>\n<p>[code language=&#8221;javascript&#8221;]<br \/>\nvar somExpression = &quot;guide[0].guide1[0].guideRootPanel[0].form-panel[0].decide-toapply-panel[0].eligibilityamount[0]&quot;;<\/p>\n<p>var eligibilityAmountComp = guideBridge.resolveNode(somExpression);<br \/>\neligibilityAmountComp.visible = true;<br \/>\neligibilityAmountComp.value = 120000;   <\/p>\n<p>[\/code]<\/p>\n<ol style=\"text-align: justify;\" start=\"2\">\n<li><strong> Using the Element Name \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0<\/strong><br \/>\nThe Element Name of AEM Component which represents the Component Object can also be used. But the limitation of this approach is that the scope of the object is limited to JavaScript code which is written using rule editor in code\/visual editor. So in case, the component is required to be used in clientlibs for forms, then the above-mentioned approach is required to be implemented, as <i>\u2018guideBridge\u2019<\/i> object is available globally. Element Name can be used as shown below: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-46034 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/52.png\" alt=\"5\" width=\"1290\" height=\"621\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/52.png 1290w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/52-300x144.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/52-1024x492.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/52-624x300.png 624w\" sizes=\"(max-width: 1290px) 100vw, 1290px\" \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 In above code, \u2018<em>eligibilityAmount<\/em>\u2019 is the element name of the TextBox Form component and this can be used directly to set its value.<\/li>\n<\/ol>\n<h1 style=\"text-align: justify;\"><strong>III. Form Panel Validation<\/strong><\/h1>\n<p style=\"text-align: justify;\"><span style=\"font-size: 1rem;\">Multi-step or Multi-panel forms are used in the case where there are multiple fields in a form, which makes the form lengthy. The related use case can be a Loan form again, where few KYC fields are required to be filled and then based on certain loan criteria, the other form fields should be filled. So I used Multi-panel AEM forms (available OOTB), where I validated the current panel and then moved to the next panel on a button click.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-weight: 400;\">We can apply the validation on form fields using the rule editor, using GuideBridge API we can create a method in JavaScript present under AEM forms clientlib and invoke this method on every \u2018<em>Next<\/em>\u2019 button click. The method should first validate the current panel, and if it is successfully validated, then only move to the next panel, otherwise, error messages should be rendered. Details of the steps are\u00a0mentioned here:<\/span><\/p>\n<ol style=\"text-align: justify;\">\n<li><span style=\"font-weight: 400;\">\u00a0Create clientlib and add it to the AEM Form. This is done by editing the Adaptive form container in the form and then adding the clientlib category to the \u201cClient Library category\u201d field. \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-46035 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/62.png\" alt=\"6\" width=\"1296\" height=\"653\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/62.png 1296w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/62-300x151.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/62-1024x515.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/62-624x314.png 624w\" sizes=\"(max-width: 1296px) 100vw, 1296px\" \/>\u00a0<\/span><\/li>\n<li>Create Method <em>nextClick()<\/em> in any existing or new Js File in Clientlib.\n<p>[code language=&#8221;javascript&#8221;]<\/p>\n<p>function nextClick(currentPanel){<br \/>\n\tvar myList = [];<br \/>\n\tif(guideBridge.validate(myList,currentPanel.navigationContext.currentItem.somExpression))<br \/>\n    {<br \/>\n\t\twindow.guideBridge.setFocus(currentPanel.somExpression,\u2019nextItem\u2019,true);<br \/>\n\t}<br \/>\n}   <\/p>\n<p>[\/code]<\/p>\n<\/li>\n<li style=\"text-align: left;\">\u00a0Add \u2018<em>Next\u2019<\/em> button to the toolbar of the MultiPanel wizard.<img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-46036 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/72.png\" alt=\"7\" width=\"1283\" height=\"625\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/72.png 1283w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/72-300x146.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/72-1024x498.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/72-624x303.png 624w\" sizes=\"(max-width: 1283px) 100vw, 1283px\" \/><\/li>\n<li>Add method call passing the current panel you want to validate in Rule Editor of next button. \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0<img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-46037 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/81.png\" alt=\"8\" width=\"1284\" height=\"596\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/81.png 1284w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/81-300x139.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/81-1024x475.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/81-624x289.png 624w\" sizes=\"(max-width: 1284px) 100vw, 1284px\" \/><\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Now on clicking \u2018Next\u2019 button, the current panel will be first validated, then the user can move to the next panel.<\/p>\n<h1 style=\"text-align: justify;\"><strong>IV. Get Proper XML sample for\u00a0Dynamic Form Pre-filling<\/strong><\/h1>\n<p style=\"text-align: justify;\"><span style=\"font-weight: 400;\">Dynamic <a href=\"https:\/\/helpx.adobe.com\/aem-forms\/6-2\/prepopulate-adaptive-form-fields.html\">pre-filling<\/a><\/span><span style=\"font-weight: 400;\">\u00a0is one of the popular feature of AEM forms, as well as a ubiquitous requirement in the forms.This can be used whenever there are fields to be pre-filled for the user or to enable the edit form feature for the\u00a0user.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-weight: 400;\">AEM forms take\u00a0the specified XML format to allows pre-filling. The one implementing this feature must know the correct XML schema of the form. There is an easy way to generate this XML and here are the details for the same:<\/span><\/p>\n<ol style=\"text-align: justify;\">\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Edit the Adaptive Form Container and click on the submission tab of the dialog on the left side of the form. \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><\/span><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-46038 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/91.png\" alt=\"9\" width=\"1299\" height=\"643\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/91.png 1299w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/91-300x148.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/91-1024x506.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/91-624x308.png 624w\" sizes=\"(max-width: 1299px) 100vw, 1299px\" \/><\/li>\n<li><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"> Choose Forms Portal Submit Action from drop down of the Submit Action and save the changes.<br \/>\n<\/span><\/span><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-46039 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/101.png\" alt=\"10\" width=\"1283\" height=\"581\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/101.png 1283w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/101-300x135.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/101-1024x463.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/101-624x282.png 624w\" sizes=\"(max-width: 1283px) 100vw, 1283px\" \/><\/li>\n<li>Go to Preview mode of the form and submit the form. \u00a0 \u00a0 \u00a0<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Open CRXDE and go to the path &#8216;<em>\/content\/forms\/<\/em>fp<em>\/admin\/submit\/data&#8217;<\/em>\u00a0and look for the last node under it (this is the node where data is stored as XML for form portal submission option).<\/span><\/li>\n<li style=\"text-align: left;\">Check the \u2018jcr:data\u2019<span style=\"font-size: 1rem;\"> property of this node and click on \u2018view\u2019 on the Value. \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-46040 size-full\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/112.png\" alt=\"11\" width=\"1300\" height=\"625\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/112.png 1300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/112-300x144.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/112-1024x492.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/112-624x300.png 624w\" sizes=\"(max-width: 1300px) 100vw, 1300px\" \/><\/li>\n<li>An XML file will be downloaded, and you can use this XML as the sample for preview feature.<span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">\u00a0\u00a0<\/span><\/span><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-46041 size-full alignleft\" src=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/122-e1487010269156.png\" alt=\"12\" width=\"1038\" height=\"634\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2017\/02\/122-e1487010269156.png 1038w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/122-e1487010269156-300x183.png 300w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/122-e1487010269156-1024x625.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2017\/02\/122-e1487010269156-624x381.png 624w\" sizes=\"(max-width: 1038px) 100vw, 1038px\" \/><\/li>\n<\/ol>\n<p style=\"text-align: justify;\"><b>\u00a0<\/b><\/p>\n<p style=\"text-align: justify;\"><b>REFERENCES\u00a0<\/b><\/p>\n<ol>\n<li style=\"text-align: justify;\">https:\/\/helpx.adobe.com\/aem-forms\/6-2\/topics.html<\/li>\n<li style=\"text-align: justify;\">https:\/\/helpx.adobe.com\/aem-forms\/6-2\/prepopulate-adaptive-form-fields.html<\/li>\n<li style=\"text-align: justify;\">https:\/\/helpx.adobe.com\/aem-forms\/6-2\/javascript-api\/GuideBridge.html<\/li>\n<li style=\"text-align: justify;\">https:\/\/helpx.adobe.com\/aem-forms\/6-2\/rule-editor.html<\/li>\n<li style=\"text-align: justify;\">https:\/\/helpx.adobe.com\/aem-forms\/6-2\/introduction-forms-authoring.html<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>We often come across some tricks during the\u00a0implementation of AEM components, which are not documented anywhere and we spend a lot of time in applying these tricks to our problems. I got a\u00a0chance to work on a small proof of concept around AEM 6.2 Forms implementation, where I was exploring the OOTB Form components. I [&hellip;]<\/p>\n","protected":false},"author":994,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"quote","meta":{"iawp_total_views":404},"categories":[1],"tags":[4847,4051,4394,4393],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/46028"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/994"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=46028"}],"version-history":[{"count":1,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/46028\/revisions"}],"predecessor-version":[{"id":54647,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/46028\/revisions\/54647"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=46028"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=46028"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=46028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}