由于我们的AEM专家目前不在办公室,所以我需要在CRX中修复某些问题。我的网站上有一个带有复选框的表单,作者可以在其中旁边设置文本。现在,我正在尝试添加功能以设置创作对话框中需要的此复选框。
我能够在创作中找到一个具有此属性的文本字段,但是在CRX的html中,我只看到代码required=${required}
,其中像label这样的其他字段显示为${properties.label}
,并且在CRX中具有相应的节点。我不了解如何实施要求,并且在这里需要帮助。
我已经尝试将required=${required}
添加到我的复选框输入标记中,但这没有用,因为在创作对话框中仍然没有复选框/开关来使该字段成为必填字段(这是预期的)。
这是标记中的行,如果作者在创作对话框中将其设置为required:
<input required="${required}" type="checkbox" name="campaignform-termsofservice"/>
这是我希望能够使复选框成为所需的整个html:
<div data-sly-test="${!empty}" class="form__text">
<label class="maut-checkbox--container">
<input required="${required}" type="checkbox" name="campaignform-termsofservice"/>
<span class="maut-checkbox--checkmark"></span>
<span>${properties.checkboxtext @context='html'}</span>
<div><a href="${properties.tncLink @ extension='html'}">${properties.tncText}</a></div>
<div style="color:white;" class="authoring-error" data-sly-test="${wcmmode.edit && !tncDate.tncLinkActivationDate}">${'b2x.maut.campaignform.dialog.tos.activationmessage' @ i18n, source='user'}</div>
<input type="hidden" name="maut.field.tnc" value="${tncDate.tncLinkActivationDate}" />
</label>
</div>
现在,我只需要弄清楚如何在创作对话框中显示将其设置为必需的选项。
提前感谢
如果您想知道required=${required}
的实现方式,则首先在该组件的html中寻找类似data-sly-use.required
的内容。这将具有类似=com.project.yourProject.className
或某些js文件的表达式。
让我们讨论最常见的Java案例。 data-sly-use
的作用是创建您在表达式中提供的类的对象。在您的情况下,您的对象是required
。然后,您需要检查表达式求值的java类。通常,所有后端逻辑代码都是它们的逻辑,如果需要对作者在对话框中输入的数据进行某些操作或验证,则将是它们的逻辑。该类还将包含将类变量与对话框的属性值映射的注释。希望这可以解释${required}
的来源。如果查看data-sly-use
表达式所引用的java类,这对您会更加清楚。