Spring MVC:spring:bind和form:form之间的区别

时间:2011-12-21 14:47:57

标签: forms jsp spring-mvc

我希望在提交表单时找出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?

由于

1 个答案:

答案 0 :(得分:26)

通常,如果您已使用<spring:bind> taglib,则无需使用form

它们在模型属性方面基本相同,但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无法实现。