首先先上一段用SpringMVC提供的标签库来写的表单代码
<form:form action="add" >
<!--path就是原来inout的name项
path:
01、当做原生name项;
02、自动回显隐含模型中某个对象对应的这个属性的值
-->
Id:<form:input value="<%=Id%>" path="Id"/><br/>
Region:<form:input path="region"/><br/>
Have:<form:input path="have"/><br/>
Value:<form:input path="value"/><br/>
<input type="submit" value="提交"/><br/>
</form:form>
可如果贸然模仿,则可能就掉入了两个最容易进入的坑中了
首先,Jsp页面是需要添加标签库的
在代码头加上如下一段,才可使用标签库
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
prifix一般取名为form,当然也可随你心意取别的,但要记住标签中名字的修改
而第二个坑就是,经常会出现一个错误
Neither BindingResult nor plain target object for bean name ‘command’ available as request attribute
这是什么意思?其实翻译来就是"BindingResult和Bean name’command’的普通目标对象都不可用作请求属性",其实意思就是没有找到对象请求绑定类。
这样就很清楚了,我们最起码需要一个名为“command”的类在请求域中
对于这个坑我们有三个办法解决它
第一种:
同样在Jsp代码头加上代码
<jsp:useBean id="command" class="com.why.bean.User" scope="request"></jsp:useBean>
第二种:
使用 <form:form action="add" modelAttribute="command">
加上@RequestMapping方法中 model.addAttribute("command,new User());
第三种:
使用 <form:form action="add" modelAttribute="command">
加上public String 方法名(@ModelAttribute("command") User user);