如何使 AEM/CRX 中的输入字段成为必填字段?

How to make a Input field in AEM/CRX required?

由于我们的 AEM 人员目前不在办公室,我需要修复我们的 CRX 中的一些东西。我的网站上有一个带有复选框的表单,作者可以在其中设置旁边的文本。现在我正在尝试添加功能以将此复选框设置为创作对话框中所必需的。

我能够在创作中找到一个包含此 属性 的文本字段,但在 CRX 的 html 中我只看到代码 required=${required},其中标签等其他字段是显示为 ${properties.label} 并在 CRX 中有相应的节点。我不明白 required 是如何实现的,需要帮助。

我已经尝试将 required=${required} 添加到我的复选框输入标记中,但这没有用,因为在创作对话框中仍然没有 checkbox/switch 使该字段成为必填字段(有点预期)。

这是标记中的行,如果作者在创作对话框中将其设置为必需,则应该是必需的:

<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 的作用是创建一个您在表达式中给出的 class 的对象。在您的情况下,您的对象是 required。然后,您需要检查表达式求得的 java class。通常,所有后端逻辑代码都是他们的,如果需要对作者在对话框中输入的数据进行一些操作或验证,则将是他们的。此 class 还将包含将 class 变量映射到对话框的 属性 值的注释。 希望这能解释这个 ${required} 的来源。如果您查看 data-sly-use 表达式引用的 java class,您会更清楚。