我在Spring中有以下表单显示错误消息。我想知道我什么时候应该使用spring:bind?这有什么区别呢?我研究了这些页面a,b,但我仍然感到困惑。
1
<form:form method="post"
action="http://localhost:8080/project/calculator/process"
modelAttribute="keyPadForm">
Name1: <form:input type="text" path="name1" />
<form:errors path="name1" />
2
<form:form method="post"
action="http://localhost:8080/project/calculator/process"
modelAttribute="keyPadForm">
<spring:bind path="name1">
Name1: <form:input type="text" path="name1" />
<form:errors path="name1" />
</spring:bind>
答案 0 :(得分:2)
在第二种情况下,spring:bind
标记已过时,是您的第一个表单
<form:form method="post"
action="http://localhost:8080/project/calculator/process"
modelAttribute="keyPadForm">
Name1: <form:input type="text" path="name1" />
<form:errors path="name1" />
是一种语法糖,不使用form
标记库而不是常见的HTML表单标记的等价物将基于spring:bind
,并且看起来像:
<spring:nestedPath path="keyPadForm">
<form method="post" action="http://localhost:8080/project/calculator/process">
<spring:bind path="name1">
Name1:<input type="text" name="${status.expression}" value="${status.value}">
<span class="fieldError">${status.errorMessage}</span>
</spring:bind>
</form>
</spring:nestedPath>
在某些情况下,您可以发挥作用,例如: form:input
始终是双向绑定,因此将值发送到服务器并显示当前值,与spring:bind
一样,您可以实现单向绑定,只发送到服务器,省略价值,例如<input type="text" name="${status.expression}">
,但主要要点是form
标记库提供了更方便的绑定相关标记
答案 1 :(得分:2)
使用spring:bind
,您可以使用${status.error}
检查name1
字段是否有错误,并有条件地显示不同的CSS类。
错误消息仍然通过form:errors
显示,但这样您可以获得更多控件
例如:
<form:form method="post" modelAttribute="userForm" action="${userActionUrl}">
<spring:bind path="name">
<div class="form-group ${status.error ? 'has-error' : ''}">
<label>Name</label>
<form:input path="name" type="text" id="name" />
<form:errors path="name" />
</div>
</spring:bind>
</form:form>