最近在使用springmvc的时候看到一个标签springBind,使用后发现绑定的时候input的名字直接跟form对象的属性一致时就可以绑定,根本不需要springBind的标签
#springBind("orderForm.address")
address<input type="text" name="address"/></br>
也就是说直接写成这样:address<input type="text" name="address"/>就可以绑定成功了,因此怀疑springBind的作用是用来绑定input名字和form对象属性不一直的情况,于是改成:
#springBind("orderForm.address")
address<input type="text" name="address2"/></br>没想到绑定失败,想不明白为什么,google一下发现一遍文章:
http://blog.csdn.net/airu/archive/2008/03/13/2177631.aspx在最后的地方写到:
<input>的name属性值必须与<spring:bind>的path属性的匹配,否则就绑定不了!
例如下面的代码就绑定不了
<spring:bind path="user.age">
<input type="text" name="theAge" value="${status.value}">
<font color="red">${status.errorMessage}</font>
</spring:bind>
为了避免手误,强烈推荐下列方法来绑定:
<spring:bind path="user.age">
<input type="text" name="${status.expression}" value="${status.value}">
<font color="red">${status.errorMessage}</font>
</spring:bind>
发现这里的 status.expression不是个例子,而是表达式,晕菜,之前一直以为是例子。于是把自己的代码改成:
#springBind("orderForm.address")
address<input type="text" name="${status.expression}"/></br>
这样就可以绑定字段了。
终于理解了springBind的用法,真是错误让理解更深刻