Spring MVC: разница между пружиной: связывание и форма: форма - PullRequest
14 голосов
/ 21 декабря 2011

Я хочу выяснить разницу между библиотеками тегов 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>
....

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

Спасибо

1 Ответ

26 голосов
/ 21 декабря 2011

Обычно вам не нужно использовать <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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...