Что такое <spring: bind> for? Когда использовать его и когда его не использовать?

У меня возникают проблемы с отправкой данных формы в spring. <spring:bind> представляется частью решения. См. Мою полную проблему здесь.

Документация BindTag найденная здесь, не ясна для меня. Почему <spring:bind> необходимо в некоторых случаях отправлять данные, в то время как в большинстве случаев они не нужны?

Каковы типичные случаи, когда <spring:bind> должен использоваться для правильной работы формы?

Ответ 1

Вы найдете тег <spring:bind> полезным, если вы хотите разобрать несколько объектов из формы ввода. Здесь представлен измененный пример из документа Spring doc (http://docs.spring.io/spring/docs/1.2.6/taglib/tag/BindTag.html):

<form method="post">
        ## now bind on the name of the company
        <spring:bind path="company.name">
        ## render a form field, containing the value and the expression
        Name: <input 
            type="text" 
            value="<c:out value="${status.value}"/>"
            name="<c:out value="${status.expression}"/>">
        </spring:bind>

<spring:bind path="address.street">
    Name: <input 
        type="text"
        value="<c:out value="${status.value}"/>"
        name="<c:out value="${status.expression}"/>">
</spring:bind>
<input type="submit">
</form> 

Ответ 2

Хотя я никогда не использовал этот тег сам, мое понимание документации - это. Тег предоставит вам информацию о статусе привязки свойства формы к bean. Например, в:

<form:form modelAttribute="employee">
    <form:input path="name"/>
    <spring:bind path="name"/>
    <spring:bind path="employee"/>
</form:form>

Тег будет отображать (или выставлять через объект BindStatus) все ошибки, произошедшие с атрибутом имени (первый случай) и всеми ошибками в сущности Employee и его атрибутах (второй случай). Я не уверен, что этот тег имеет какое-либо отношение к успешности отправки данных, а скорее к тому, что он используется как информационный инструмент.