Подтвердить что ты не робот

Spring MVC: Разница между spring: bind и form: form

Я ищу, чтобы узнать разницу между библиотеками тегов spring: bind и form: form при отправке формы.

Фрагмент моего JSP выглядит следующим образом:

<form:form modelAttribute="testRulesForm">
....
<td>
    <form:checkbox path="rules[${counter.index}].isActive" value="rules[${counter.index}].isActive"/>
</td>
<td>
    <form:select path="rules[${counter.index}].leftCondition.name">
        <form:options items="${testRulesForm.ruleAttributes}" itemLabel="name" itemValue="name" />
    </form:select>
</td>
<td>
    <form:select path="rules[${counter.index}].operator">
        <form:options itemLabel="operator" itemValue="operator" />
    </form:select>
</td>
....

Увидев, что у меня указанная переменная пути, и это будет связано с моим атрибутом modelAttribute, означает ли это, что мне не нужен spring: bind?

Спасибо

4b9b3361

Ответ 1

Обычно вам не нужно использовать <spring:bind>, если вы уже используете form taglib.

Они делают в основном то же самое в отношении атрибутов модели, но теги из form taglib также генерируют разметку HTML-формы, тогда как с <spring:bind> вам нужно самостоятельно создавать разметку.

Следующий код с тегами form:

<form:form modelAttribute = "foo">
    <form:input path = "bar" />
</form:form>

похож на следующий код с <spring:bind>:

<spring:bind path = "foo">
    <form method = "get">
        <spring:bind path = "bar">
            <input name = "bar" value = "${status.displayValue}" />
        </spring:bind>
    </form>
</spring:bind>

<spring:bind> полезен, когда вам нужно что-то настроенное, чего не может достичь form taglib.