Spring form checkbox tag: зачем генерировать скрытый элемент?

Я использую Spring MVC для веб-приложения. На форме у меня есть

<form:checkbox path="agreeTerms" id="agreeTerms"/>

Когда страница отображается, создается следующий HTML

<input id="agreeTerms" type="checkbox" value="true" name="agreeTerms">
<input type="hidden" value="on" name="_agreeTerms">

Кто-нибудь знает цель скрытого тега? Что произойдет, если скрытый тег ввода будет удален?

Спасибо!

Ответы

Ответ 1

Скрытый тег ввода должен указывать поле, которое первоначально было частью формы. Когда форма отправляется, поле ввода флажка отправляется только в том случае, если оно имеет значение (т.е. "Проверено" ). Если он не выбран, то ничего не отправляется. Подчеркнутое поле подчеркивания с префиксом используется для обозначения того, что оно было частью формы, но по умолчанию должно быть указано "un-checked/false".

Вы можете проверить это, создав форму HTML с полем флажка и отправив его без поля.

Также, чтобы узнать, как это сделать, проверьте исходный код WebDataBinder:

/**
* Check the given property values for field markers,
* i.e. for fields that start with the field marker prefix.
* <p>The existence of a field marker indicates that the specified
* field existed in the form. If the property values do not contain
* a corresponding field value, the field will be considered as empty
* and will be reset appropriately.
* @param mpvs the property values to be bound (can be modified)
* @see #getFieldMarkerPrefix
* @see #getEmptyValue(String, Class)
*/