之前使用ProductForm拥有过疑问,问什么会用ProductForm类。因为ProductForm类是用来暂时保存从客户端界面提取数据,从客户端提取的数据类型都是String,不过Product类的price属性时float类型,ProductForm是从客户端提取的数据String类型转换到float类型的作用。有了数据绑定,就可以取代转换的步骤。如下。。。
//jsp中 <form:form commandname="book" action="save-book" method="post"> ... </form:form> //.java中 @RequestMapping("save-book") public String inputBook(Model model) { model.addAttribute("book",new Book()); return "jsp名称"; }
需要使用标签库需要在Jsp页面添加如下代码
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
标签库的标签有:
表单 | 描述 | 使用方法 |
form | 渲染表单元素 | |
input | 渲染<input type='text'/>元素 | |
password | 渲染<input type='password'/>元素 | |
hidden | 渲染<input type='hidden'/>元素 | |
textarea | 渲染 textarea 元素 | |
checkbox | 渲染一个<input type='checkbox'/>元素 | path,value |
checkboxes | 渲染多个<input type='checkbox'/>元素 | path,item |
radiobutton | 渲染一个<input type='radio'/>元素 | path,value |
radiobuttons | 渲染多个<input type='radio'/>元素 | path,item |
select | 渲染一个选择元素 | path,items,itemLabel,itemValue |
option | 渲染一个可选元素 | |
options | 渲染多个可选元素 | |
errors | 在span元素中渲染字段错误 | |
pom.xml文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>firstSpringMVC</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>runtime</scope> </dependency> </dependencies> <properties> <maven.compiler.source>1.8</maven.compiler.source> </properties> </project>
存在的疑问:
-
在BookEditForm.jsp中为什么会用到<c:url>(书上的解释为update-book为静态值,如果把静态值给action的话会有问题,不过为什么update是静态值)
-
在控制器类中返回的是"redirect:/list-book"而不是"/list-book"前面的redirect是代表什么?
3.还没有完全弄懂这些MVC之间的逻辑关系