Как сделать поле ввода в AEM/CRX обязательным?

так как нашего парня из AEM сейчас нет в офисе, мне нужно кое-что исправить в нашем CRX. У меня есть форма с флажком на моем сайте, где авторы могут установить текст рядом с ним. Теперь я пытаюсь добавить функциональность, чтобы установить этот флажок в диалоговом окне разработки.

Мне удалось найти текстовое поле, которое имеет это свойство при разработке, но в html в CRX я вижу только код required=${required}, где другие поля, такие как метка, отображаются как ${properties.label} и имеют соответствующий узел в CRX. Я не понимаю, как это реализовано, и мне нужна помощь здесь.

Я уже пытался добавить 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>

Теперь мне нужно только выяснить, как я могу показать параметр, чтобы установить его как обязательный в диалоговом окне разработки.

заранее спасибо


person SHRX    schedule 27.02.2020    source источник
comment
Пожалуйста, уточните ваше требование. У вас есть флажок в диалоговом окне, который вам нужно сделать обязательным, или у вас есть флажок в компоненте, который должен всегда создаваться с некоторым текстом? Также будет полезно, если вы сможете предоставить всю разметку компонента.   -  person Sadistic    schedule 27.02.2020
comment
у меня есть флажок в компоненте. автор должен иметь возможность сделать этот флажок обязательным в диалоговом окне разработки. немного отредактировал вопрос, надеюсь, это прояснит его   -  person SHRX    schedule 27.02.2020


Ответы (1)


Если вы хотите узнать, как реализован required=${required}, то прежде всего в html компонента ищите что-то вроде data-sly-use.required. Это будет выражение вроде =com.project.yourProject.className или какой-нибудь файл js.

Давайте обсудим случай с Java, который является наиболее распространенным способом. Что делает data-sly-use, так это то, что он создает объект класса, который вы указали в выражении. В вашем случае ваш объект required. Затем вам нужно проверить класс java, который оценивает выражение. Обычно весь внутренний логический код будет принадлежать ему, и если потребуется выполнить некоторые манипуляции или проверки с данными, которые автор вводит в диалоговом окне, они будут принадлежать ему. Этот класс также будет содержать аннотации, которые сопоставляют переменные класса со значением свойства диалогового окна. Надеюсь, это объясняет, откуда взялось это ${required}. Вам будет понятнее, если вы посмотрите на класс java, на который ссылается выражение data-sly-use.

person Sadistic    schedule 02.03.2020
comment
спасибо, приятель, с информацией, которую вы мне дали, я смог заставить его работать, как и ожидалось. спасибо за вашу подробную информацию - person SHRX; 03.03.2020