Это, по сути, способ избежать многократного копирования и вставки связки HTML, а затем изменить в ней дюжину мелких деталей.
Исходный пример, который они приводят в документации (которую я знаю, что вы читали, но которую я приведу здесь для удобства):
<p>
<label>&{'user.name'}</label>
<input type="text" id="user_name" name="user.name" value="${user?.name}" class="${errors.forKey('user.name') ? 'has_error' : ''}">
<span class="error">${errors.forKey('user.name')}</span>
</p>
Если вы представите, что начинаете с этой разметки на своей странице, а затем добавляете второе поле в форму, вам придется скопировать / вставить весь этот блок, а затем изменить &{'user.name'}
, user_name
, user.name
, ${user?.name}
, user.name
и user.name
(каждая отдельная ссылка на одно и то же базовое поле) только для того, чтобы новая разметка применялась к вашему новому полю.
И это просто больше печатания, чем некоторые из нас готовы взять на себя, просто чтобы добавить поле в чертову форму.
Замена #{field 'foo'}
позволяет это:
#{field 'user.name'}
<p>
<label>&{field.name}</label>
<input type="text" id="${field.id}" name="${field.name}" value="${field.value}" class="${field.errorClass}">
<span class="error">${field.error}</span>
</p>
#{/}
Преимущество здесь в том, что user.name
появляется ровно в одном месте. Если бы вам пришлось скопировать / вставить эту разметку, чтобы добавить другое поле, вам пришлось бы сделать только одну замену: ту, что в теге #{field ...}
.
Конечным результатом является то, что проще разработать стандартную разметку для многих полей в вашей форме, не выполняя много подверженных ошибкам ручных замен меток, имен, идентификаторов, текущих значений, сообщений об ошибках, классов и т. Д. так далее.